我有一个包含字典的python列表,我想创建一个新列表,其中包含带有唯一键和相关列表值的字典,如下所示:
Input:
[{1: 2}, {2: 2}, {1: 3}, {2: 1}, {1: 3}]
Output:
[{1:[2,3,3]},{2:[2,1]}]
Run Code Online (Sandbox Code Playgroud)
提前致谢.
怎么样:
input = [{1: 2}, {2: 2}, {1: 3}, {2: 1}, {1: 3}]
r = {}
for d in input:
# (assumes just one key/value per dict)
((x, y),) = d.items()
r.setdefault(x, []).append(y)
print [ {k: v} for (k, v) in r.items() ]
Run Code Online (Sandbox Code Playgroud)
结果:
[{1: [2, 3, 3]}, {2: [2, 1]}]
Run Code Online (Sandbox Code Playgroud)
[更新]
只是好奇:你在什么回事解释
((x, y),) = d.items()和r.setdefault(x, []).append(y)?- 该死的
首先是((x, y),) = d.items():
input,就像{1: 2}d.items() 将是类似的东西 [(1, 2)],(否则解释器会认为外括号正在进行分组而不是定义单个元素元组)这r.setdefault(x, []).append(y)类似于:
if not r.has_key(x):
r[x] = []
r[x].append(y)
Run Code Online (Sandbox Code Playgroud)