我嘗試重寫下面的代碼使用字典解析工作,只是爲了好玩:嵌套字典解析:太多值解壓
import itertools
with open('foo.txt') as f:
entities = f.read().splitlines()
parsed_entities = []
while entities:
props = itertools.takewhile(lambda n: n != 'EOM', entities)
entity = {p.split('=')[0]: p.split('=')[1] for p in props}
entities = entities[len(entity)+2:] # Delete and skip EOM & newline
parsed_entities.append(entity)
我要替換這一行:
entity = {p.split('=')[0]: p.split('=')[1] for p in props}
隨着更好看的字典理解,這可能看起來像:
entity = {key: value for p in props for key, value in p.split('=')}
當我嘗試這樣做,我收到以下錯誤:
ValueError: too many values to unpack (expected 2)
我在做什麼錯?使用ipdb.pm()
我看到p是name=yam
,這很好,但是key
和value
未定義。因爲這需要p.split()
調用的每個結果具有完全相同元素
for key, value in p.split('=')
:
我覺得'p.split'('=')的長度不是2. –
@SamChats:當然可以。但'p.split('=')[0]'不是,這就是解壓縮的內容。 –
@SamChats,檢查它。我用'print(len(p.split('=')))'替換了'p.split('=')',它是2. – Infinity