gpt4 book ai didi

python - 将两个字典组合成一个列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:36 24 4
gpt4 key购买 nike

我有两个字典,我想将这两个 int 组合成一个列表,格式为 keys-->values,keys-->values... 删除任何 None 或 ['']

目前我有下面的内容,我可以在其中组合字典但不能创建组合列表……我有预期的输出……任何输入表示赞赏

dict1={'313115': ['313113'], '311957': None}
dict2={'253036': [''], '305403': [], '12345': ['']}

dict = dict(dict1.items() + dict2.items())
print dict

{'313115': ['313113'], '311957': None, '253036': [''], '12345': [''], '305403': []}

EXPECTED OUTPUT:
['313115','313113','311957','253036','305403','12345']

最佳答案

应该这样做:

[i for k, v in (dict1.items() + dict2.items()) for i in [k] + (v or []) if i]

遍历两个字典的组合项,然后遍历键和值列表,返回第二次遍历中存在的每个项。

在您的示例字典中返回 ['313115', '313113', '311957', '253036', '12345', '305403'] - 顺序不同,因为 python 的字典迭代是无序的。

编辑:

dict.items() 在大型字典上可能很昂贵——它需要 O(n) 大小,而不是迭代。如果您使用 itertools,这会更有效(并将您正在使用的命令保存在一个地方):

import itertools
[i
for k, v in itertools.chain.from_iterable(d.iteritems() for d in (dict1, dict2))
for i in [k] + (v or [])
if i]

感谢 Martijn Pieters 提供的 from_iterable 技巧。

关于python - 将两个字典组合成一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305161/

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