使用dict comprehension

时间:2016-04-26 21:21:06

标签: python dictionary dictionary-comprehension

在这里感到沮丧所以非常欢迎。

我有一个文件data_fields

lname,fname,age,UID
macpherson,tom,16,219 
goldman,tim,13,316
smith,jon,11,414
doe,jon,59,512

我正在制作一个以' UID'价值如下

import csv
with open(data_fields) as readme:
    reader = csv.reader(readme)
    headers = reader.next()
    UIDindex = headers.index('UID')
    people = dict()
    for person in reader:
        people[person[UIDindex]] = {k:v for k,v in zip(headers,person) if not k=='UID'}
import pprint
pprint.pprint(people)

{'219': {'age': '16', 'fname': 'tom', 'lname': 'macpherson'},
'316': {'age': '13', 'fname': 'tim', 'lname': 'goldman'},
'414': {'age': '11', 'fname': 'jon', 'lname': 'smith'},
'512': {'age': '59', 'fname': 'jon', 'lname': 'doe'}}

哪个好用〜是的。 但是,为了不在前面创造人们dict(),我一直试图将某种形式的词典理解放在一起,其中包括“读者循环中的人”。并允许我做

return <elusive dict comprehension yielding same dict as above>

在这项努力中,我彻底失败了。并且花了很多时间在它上面。是时候问专家了! 任何人都可以帮助这种难以捉摸的理解吗?这是可能的python(在这里运行2.7.6)。

感谢

1 个答案:

答案 0 :(得分:1)

那是怎么回事:

people={person[UIDindex]:{k:v for k,v in zip(headers, person) if not k=='UID'} for person in reader}