第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)問python里字符串如何變成字典?

請(qǐng)問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相關(guān)的結(jié)構(gòu)來解答題目來源及自己的思路我是將這個(gè)字符串的空白去掉形成了列表,然后將列表變成字符串再把反斜杠去掉,但是去掉后,變成了一個(gè)個(gè)單一的字符串形成的列表,不知道該怎么形成集合的字典。相關(guān)代碼//請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)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)你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?我目前的思路也有可能是錯(cuò)的,希望可以指導(dǎo)一下,謝謝!
查看完整描述

2 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

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

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

無聊看了下,lambdawn的回答搞笑了,正則沒寫對(duì)丟數(shù)據(jù),小寫沒轉(zhuǎn)換,結(jié)果沒去重,還能一本正經(jīng)忽悠...
其實(shí)就是個(gè)map/reduce的問題,先拆分成map,然后按照鍵值聚合起來:
可以比對(duì)下,這種方式可以寫出簡(jiǎn)潔且效率較高的代碼,如下:
deffunc1():
#按空白換行符后分割,每個(gè)單元按照/切分后為value->key映射
b=map(lambdax:x.split('/'),a.split())
#按鍵值keyreduce,用set結(jié)構(gòu)去重
c={}
forvinb:
ifv[1]notinc.keys():
c[v[1]]=set()
c[v[1]].add(v[0].lower())
#set轉(zhuǎn)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
做下簡(jiǎn)單性能測(cè)試對(duì)比,
defperf_test():
start=time.clock()
foriinxrange(0,10000):
func1()
end=time.clock()
printend-start
foriinxrange(0,10000):
func2()
end=time.clock()
printend-start
結(jié)果,大概差一倍左右0.3401306938360.780941427825
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-09
  • 2 回答
  • 0 關(guān)注
  • 772 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)