2016-04-26 66 views
-1

在这里得到沮丧,所以非常欢迎。使用词典理解构造一个嵌套字典

我有一个文件,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'}} 

其中一期工程OK〜十岁上下。 但没有创造的利益,人民的dict()前面我一直在试图把某种形式的字典理解在一起将包括“的人在阅读器循环”,让我做

return <elusive dict comprehension yielding same dict as above> 

在这个努力中,我彻底失败了。并花费了大量的时间。有时间请问这里的专家! 任何人都可以帮助这个难以理解的理解?这可能与python(在这里运行2.7.6)。

感谢

回答

1

关于什么:

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