gpt4 book ai didi

python - 当 dict 中的值是一个列表时,如何对 dict 进行这样的分割?

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:03 27 4
gpt4 key购买 nike

我有一个字典,其中键是字符串,值是包含一些数字的列表,例如代码中的 d 。我想返回一个列表,其中每个元素都是一个字典,其中包含输入字典中的所有键并包含按升序排列的值,例如代码中的结果。假设我们不知道列表中有多少个元素(代码中可能不是 3 或 4),但元素的数量是相同的。

例如1:

d = {'1': [11, 12, 13], '2': [21, 22, 23], '3': [31, 32, 33]}
# ???
result = [{'1': 11, '2': 21, '3': 31},
{'1': 12, '2': 22, '3': 23},
{'1': 13, '2': 23, '3': 33}]

例如2:

d = {'1': [11, 12, 13, 14], '2': [21, 22, 23, 24], '3': [31, 32, 33, 34]}
# ???
result = [{'1': 11, '2': 21, '3': 31},
{'1': 12, '2': 22, '3': 23},
{'1': 13, '2': 23, '3': 33},
{'1': 14, '2': 24, '3': 34}, ]

最佳答案

zip 将所有值列出在一起,然后使用键压缩每个结果tuple 值以生成新的dict:

result = [dict(zip(d, vs)) for vs in zip(*d.values())]

Try it online!

这是有效的,因为 dict 的迭代顺序与其值的迭代顺序一致(它在 3.6+ 中是插入顺序的,但对于所有版本的给定 Python 运行都是一致的); “每个循环”zipd 中的键将以与前面 zip 中提取值相同的顺序进行迭代。

这假设“增加顺序”的意思是“保留输入的顺序”;如果情况并非如此,则需要明智地使用 sorted 内置函数。

关于python - 当 dict 中的值是一个列表时,如何对 dict 进行这样的分割?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com