为了账号安全,请及时绑定邮箱和手机立即绑定

请问python里字符串如何变成字典?

请问python里字符串如何变成字典?

尚方宝剑之说 2019-05-09 22:36:51
a='''The/ATgrand/JJjury/NNcommented/VBon/Ina/ATnumber/NNof/Inother/APtopics/NNS,/,AMONG/Inthem/PPOthe/ATAtlanta/NPand/CC'''{'AT':['the','a'],'JJ':['grand'],'NN':['jury','number'],'VB':['commented'],'In':['on','of','among'],'AP':['other'],'NNS':['topics'],',':[','],'PPO':['them'],'NP':['atlanta'],'CC':['and']}将上面的字符串变成下面的字典,但是限定只能用str,list,dictionary相关的结构来解答题目来源及自己的思路我是将这个字符串的空白去掉形成了列表,然后将列表变成字符串再把反斜杠去掉,但是去掉后,变成了一个个单一的字符串形成的列表,不知道该怎么形成集合的字典。相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)importrea='''The/ATgrand/JJjury/NNcommented/VBon/Ina/ATnumber/NNof/Inother/APtopics/NNS,/,AMONG/Inthem/PPOthe/ATAtlanta/NPand/CC'''b=re.findall('w+/w+',a)c=str(b).split('/')print(c)你期待的结果是什么?实际看到的错误信息又是什么?我目前的思路也有可能是错的,希望可以指导一下,谢谢!
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

b=re.findall(r'(.+?)/(.+?)',a)#注意最后有个空格
keys=[]
for_binb:
if_b[1]notinkeys:
keys.append(_b[1])
res={}
forkeyinkeys:
res[key]=[_b[0]for_binbif_b[1]==key]
                            
查看完整回答
反对 回复 2019-05-09
?
慕沐林林

TA贡献2016条经验 获得超9个赞

无聊看了下,lambdawn的回答搞笑了,正则没写对丢数据,小写没转换,结果没去重,还能一本正经忽悠...
其实就是个map/reduce的问题,先拆分成map,然后按照键值聚合起来:
可以比对下,这种方式可以写出简洁且效率较高的代码,如下:
deffunc1():
#按空白换行符后分割,每个单元按照/切分后为value->key映射
b=map(lambdax:x.split('/'),a.split())
#按键值keyreduce,用set结构去重
c={}
forvinb:
ifv[1]notinc.keys():
c[v[1]]=set()
c[v[1]].add(v[0].lower())
#set转list
d={k:list(v)fork,vinc.items()}
returnd
如果非得按照lambdawn这样思路,代码大概如下:
deffunc2():
b=re.findall(r'(.+?)/(.+?)\s+',a+'')
keys=[]
for_binb:
if_b[1]notinkeys:
keys.append(_b[1])
res={}
forkeyinkeys:
for_binb:
if_b[1]==key:
c=res.get(key,[])
if_b[1]==keyand_b[0].lower()notinc:
ifnotc:
res[key]=[]
res[key].append(_b[0].lower())
returnres
做下简单性能测试对比,
defperf_test():
start=time.clock()
foriinxrange(0,10000):
func1()
end=time.clock()
printend-start
foriinxrange(0,10000):
func2()
end=time.clock()
printend-start
结果,大概差一倍左右0.3401306938360.780941427825
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 755 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信