gpt4 book ai didi

python - 在Python中使用相同的键在字典中查找不同的值

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:44 24 4
gpt4 key购买 nike

我有 2 个字典列表,它们具有相同的键,但具有不同的值。

Dict_one = {"A": ["a1", "a2", "a3"], "B": ["b1", "b2"], "C":["c1", "c2", "c3", "c4"]}

Dict_two = {"A": ["a1"], "B": ["b1", "b2"], "C":["c1", "c2", "c3", "c5"]}

我想得到 2 个字典列表;

One 是 Dict_one 中的字典值列表,但不在 Dict_two 中。

另一个是 Dict_two 而不是 Dict_one 中的值的字典列表。

结果示例:

Result_one_two = {"A": ["a2", "a3"], "B": [], "C": ["c4"]}
Result_two_one = {"A": [], "B": [], "C": ["c5"]}

获取输出的最pythonic方式是什么?

编辑:它们总是有相同的键。

最佳答案

您可以在字典理解中使用set.difference:

In [29]: Result_one_two = {k: set(Dict_one[k]).difference(Dict_two[k]) for k in Dict_one}

In [30]: Result_one_two
Out[30]: {'A': {'a2', 'a3'}, 'B': set(), 'C': {'c4'}}

In [31]: Result_two_one = {k: set(Dict_two[k]).difference(Dict_one[k]) for k in Dict_one}

In [32]: Result_two_one
Out[32]: {'A': set(), 'B': set(), 'C': {'c5'}}

最好将值保留为 set 放在第一位。在这种情况下,您不需要为每个值调用集合。另请注意,如果您使用的是 Python-3.6+,因为这些版本中的词典是按插入顺序输出的,否则您应该使用 OrderedDict 来跟踪订单。但是,如果这里的性能不是问题和/或您正在处理一个简短的数据集,您可以像其他答案中所解释的那样使用列表理解。

此外,如评论中所述,如果值的顺序对您很重要,以便利用集合操作并保持顺序,您可以使用自定义有序集,就像这里建议的那样 https://stackoverflow.com/a/10006674/2867928雷蒙德·赫廷格 (Raymond Hettinger) 着。

关于python - 在Python中使用相同的键在字典中查找不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51035654/

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