有多个列表,我想从中创建一个嵌套字典:
x = ['a','b','c','d']
keys_a = ['1','2','3','4']
values_a = [11,22,33,44]
keys_b = ['5','6','7','8']
values_b = [55,66,77,88]
keys_c = ['9','10','11','12']
values_c = [99,1010,1111,1212]
keys_d = ['13','14','15','16']
values_d = [1313,1414,1515,1616]
我想要做的是将a与keys_a和values_a匹配,将b与keys_b和values_b匹配,将c与keys_c和values_c匹配,等等。
预期输出如下:
d = {'a':{'1':11,
'2':22,
'3':33,
'4':44},
'b':{'5':55,
'6':66,
'7':77,
'8':88},
'c':{'9':99,
'10':1010,
'11':1111,
'12':1212,
'13':1313},
'd':{'14':1414,
'15':1515,
'16':1616,
'17':1717}}
你能帮我用 python 实现这个目标吗?我已经尝试过使用 zip 函数,但它没有给我预期的结果。对于我应该编写以获得预期输出的代码有什么建议吗?
谢谢!
最佳答案
如果您熟悉列表和字典的理解,则可以将 x
与键列表和值列表的列表一起压缩。看起来像这样:
output = {
a: dict(zip(k, v))
for a, k, v in zip(
x,
[keys_a, keys_b, keys_c, keys_d],
[values_a, values_b, values_c, values_d]
)}
如果这很难读(确实如此),您可以使用更传统的 for 循环,如下所示:
output = {}
keys = [keys_a, keys_b, keys_c, keys_d]
values = [values_a, values_b, values_c, values_d]
for a, k, v in zip(x, keys, values):
output[a] = dict(zip(k, v))
关于python - 如何在Python中将多个列表压缩到嵌套字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64566376/