从包含列表的字典中创建多个字典

4

我有一个包含列表的字典,我想从中创建多个字典。

原始字典如下:{'user': ['BEBR', 'FRPA', 'GEMU'], 'udp': ['COLT_BE_8845-udp', 'COLT_FR_8845-udp', 'COLT_DE_8845-udp']}

我希望得到以下结果:

[{'user': 'BEBR', 'udp': 'COLT_BE_8845-udp'},
{'user': 'FRPA', 'udp': 'COLT_FR_8845-udp'},
{'user': 'GEMU', 'udp': 'COLT_DE_8845-udp'},
....]

我有一个沙盒,在这里


1
你想将这些列表压缩在一起,使得结果是三个字典,还是想要乘积,使得结果是九个字典? - Patrick Haugh
4个回答

3
你可以这样做。
res = [{'user':user,'udp':udp} for user, udp in zip(*d.values())]

其中d是您的原始字典


1
尝试以下代码:

result = []
for user, udp in zip(original['user'], original['udp']):
    result.append({'user': user, 'udp':udp})

这将返回一个字典列表,就像您的示例中一样。

1
你可以使用 zipdict
d = {'user': ['BEBR', 'FRPA', 'GEMU'], 'udp': ['COLT_BE_8845-udp', 'COLT_FR_8845-udp', 'COLT_DE_8845-udp']}
result = [dict(j) for j in zip(*[[(a, i) for i in b] for a, b in d.items()])]

输出:

[{'user': 'BEBR', 'udp': 'COLT_BE_8845-udp'}, {'user': 'FRPA', 'udp': 'COLT_FR_8845-udp'}, {'user': 'GEMU', 'udp': 'COLT_DE_8845-udp'}]

0
# finds the list in the csvfile dictionary with the key "user"
# the program uses this value to define the length of all list key values in the dictionary
listlength = len(csvfile["user"])

# extract list of keys e.g. user, udp
keys = [key for key in csvfile]

main_list = []
for x in range(listlength):
 sub_dictionary = {}
 for key in keys:
   sub_dictionary[key] = csvfile[key][x]
 main_list.append(sub_dictionary)
print(main_list)

或者等价的

csvdict = [{key: csvfile[key][value] for key in [key for key in csvfile]} for value in range(len(csvfile["user"]))]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接