我有一个字典列表,其中包含一个键和一个字典值,例如:
Array = [
{'Example1': {'Time Taken': 56, 'Type': 'Quiz'} },
{'Example1': {'Time Taken': 58, 'Type': 'Exam'} },
{'Example2': {'Time Taken': 40, 'Type': 'Quiz'} } ]
我想遍历该列表并仅获取唯一键,并将这些值合并到一个列表中,如下所示:
{ 'Example1': [
{ 'Time Taken': 56, 'Type': 'Quiz' },
{ 'Time Taken': 58, 'Type': 'Exam' } ] }
{ 'Example2': [ { 'Time Taken': 40, 'Type': 'Quiz' } ] }
关于如何执行此操作的任何想法?我尝试了很多不同的方法,但是似乎无法获得编写此代码的有效方法。任何反馈表示赞赏。
答案 0 :(得分:2)
使用collections.defaultdict
例如:
from collections import defaultdict
Array = [ {"Example1": {"Time Taken": 56, "Type": "Quiz"} }, {"Example1": {"Time Taken": 58, "Type": "Exam"} }, {"Example2": {"Time Taken": 40, "Type": "Quiz"} } ]
result = defaultdict(list)
for ar in Array: #Iterate each element in list
for k, v in ar.items(): #Iterate your dict
result[k].append(v) #Create key-list.
print(result)
输出:
defaultdict(<class 'list'>, {'Example1': [{'Time Taken': 56, 'Type': 'Quiz'}, {'Time Taken': 58, 'Type': 'Exam'}], 'Example2': [{'Time Taken': 40, 'Type': 'Quiz'}]})
答案 1 :(得分:0)
如果缺少键,则可以遍历字典并使用dict.setdefault
将默认值设置为空列表,否则将其追加到列表中
for dct in Array:
for k, v in dct.items():
out.setdefault(k, []).append(v)
out
是所需的输出dict
。
示例:
In [1208]: arr = [ {'Example1': {'Time Taken': 56, 'Type': 'Quiz'} }, {'Example1': {'Time Taken': 58, 'Type': 'Exam'} }, {'Example2': {'Time Taken': 40, 'Type': 'Quiz'} } ]
In [1209]: out = {}
In [1210]: for dct in arr:
...: for k, v in dct.items():
...: out.setdefault(k, []).append(v)
...:
In [1211]: out
Out[1211]:
{'Example1': [{'Time Taken': 56, 'Type': 'Quiz'},
{'Time Taken': 58, 'Type': 'Exam'}],
'Example2': [{'Time Taken': 40, 'Type': 'Quiz'}]}
答案 2 :(得分:0)
尝试关注。
from collections import defaultdict
# l is list of dictionaries
d = defaultdict(list)
for x in l:
for y in x:
d[y].append(x[y])
print(d)
答案 3 :(得分:0)
我创建了以下内容,没有任何外部模块
Array = [{'Example1': {'Time Taken': 56, 'Type': 'Quiz'} },
{'Example1': {'Time Taken': 58, 'Type': 'Exam'} },
{'Example2': {'Time Taken': 40, 'Type': 'Quiz'} }]
result = {}
for i in range(len(Array)):
dict = Array[i]
for key in dict :
if key in result:
result[key].append(dict[key])
else:
result[key]=[dict[key]]
print(result)
输出:
{
'Example1': [{'Time Taken': 56, 'Type': 'Quiz'},
{'Time Taken': 58, 'Type': 'Exam'}],
'Example2': [{'Time Taken': 40, 'Type': 'Quiz'}]
}