Python 3.x Python:使用字典理解将其附加到值列表 我有下面的场景——考虑下面的字典列表(输入< /强>): data=[{'key1':'k1v1','key2':'k2v1'},{'key1':'k1v2','key2':'k2v2'}, {'key1':'k1v3','key2':'k2v3'},{'key1':'k1v4','key2':'k2v4'}]

Python 3.x Python:使用字典理解将其附加到值列表 我有下面的场景——考虑下面的字典列表(输入< /强>): data=[{'key1':'k1v1','key2':'k2v1'},{'key1':'k1v2','key2':'k2v2'}, {'key1':'k1v3','key2':'k2v3'},{'key1':'k1v4','key2':'k2v4'}],python-3.x,dictionary,dictionary-comprehension,Python 3.x,Dictionary,Dictionary Comprehension,可以观察到,字典中的键是相同的。因此,我希望能够做到以下几点(所需输出): {'key1':['k1v1','k1v2','k1v3','k1v4'],'key2':['k2v1','k2v2','k2v3','k2v4']} 为了实现这一点,我可以使用以下简单的直接嵌套循环: data\u dict=dict() 对于数据中的d: 对于d.项()中的k,v: 如果数据中有k,则: 数据目录[k]。追加(v) 其他: 数据记录[k]=[v] 问题:我们可以通过字典理解来做到这一点吗?换句话说

可以观察到,字典中的键是相同的。因此,我希望能够做到以下几点(所需输出):

{'key1':['k1v1','k1v2','k1v3','k1v4'],'key2':['k2v1','k2v2','k2v3','k2v4']}
为了实现这一点,我可以使用以下简单的直接嵌套循环:

data\u dict=dict()
对于数据中的d:
对于d.项()中的k,v:
如果数据中有k,则:
数据目录[k]。追加(v)
其他:
数据记录[k]=[v]

问题:我们可以通过字典理解来做到这一点吗?换句话说,我们可以在字典理解中附加到现有的值列表吗?

这是我能做的最好的事情:

d = {}
for k in data[0].keys():
    d[k] = list(d[k] for d in ds)
这里有一个更接近听写理解的解决方案

data_dict = {
    k: [d.get(k) for d in data]
    for k in set().union(*data)
}
以下语法将生成计时最快的代码:

data\u dict={k:[dt[k]表示数据中的dt]表示数据[0]中的k。keys()}
#时间:
#每个回路1.08µs±18.2 ns(7次运行的平均值±标准偏差,每个1000000个回路)

我不是在寻找实际的性能优势,尽管可能会有一些;我只是好奇,我们是否可以通过字典理解来实现这一点。@anurag,我更新了我的回答,并提供了一个更符合您要求的解决方案