【问题标题】:constructing a nested dictionary using dict comprehension使用dict理解构造嵌套字典
【发布时间】:2016-04-26 21:21:06
【问题描述】:

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

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

这工作正常~ish。 但是为了不预先创建人员 dict(),我一直在尝试将某种形式的 dict 理解放在一起,其中包括“for person in reader loop”并允许我这样做

return <elusive dict comprehension yielding same dict as above>

在这项努力中,我彻底失败了。并为此花费了令人沮丧的时间。是时候请教这里的专家了! 任何人都可以帮助理解这种难以捉摸的理解吗?这对 python 可行吗(在这里运行 2.7.6)。

谢谢

【问题讨论】:

    标签: python dictionary dictionary-comprehension


    【解决方案1】:

    那又怎样:

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

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2021-07-24
      • 2017-11-27
      • 2021-06-18
      • 2013-07-28
      • 2011-06-06
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多