python - 如何在Python中将多个列表压缩到嵌套字典中

标签 python list dictionary nested

有多个列表,我想从中创建一个嵌套字典:

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/

相关文章:

python - 如果索引和列相同,如何在单独的列中获取数据集的相关值

使用 FreeTDS 查询 MS SqlServer 时,Python 在 255 个字符处截断

Python - 仅当不满足依赖项时才需要 Pip 安装

php - PHP 和 MySQL 中的嵌套列表

python - 泡泡洗牌 - 加权洗牌

dictionary - range 或 map 返回什么?

Python如何做列表字典的字典的.values().values()

python - csv 文件的两个特定列的列表字典

python - 如何使用字典映射替换字符串中的单词

python - DataFrame 列将字典列表存储为字符串 : Parse it and build a new dataframe