Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较字典中的所有元素_Python_Dictionary - Fatal编程技术网

Python 比较字典中的所有元素

Python 比较字典中的所有元素,python,dictionary,Python,Dictionary,有没有更好的办法?(避免系统地比较键1和键2) 您可以使用获取所有密钥对: import itertools for k1, k2 in itertools.combinations(my_dict, 2): 这假设顺序并不重要;如果是,请使用: 如果键1和键2是同一词典的键,那么它们总是不同的。另一方面,如果要对*my_dict*键集的内部笛卡尔积执行操作,可以尝试以下操作: map(lambda x: operation(x[0], x[1]), itertools.product(my

有没有更好的办法?(避免系统地比较键1和键2)

您可以使用获取所有密钥对:

import itertools

for k1, k2 in itertools.combinations(my_dict, 2):
这假设顺序并不重要;如果是,请使用:


如果键1和键2是同一词典的键,那么它们总是不同的。另一方面,如果要对*my_dict*键集的内部笛卡尔积执行操作,可以尝试以下操作:

map(lambda x: operation(x[0], x[1]), itertools.product(my_dict.keys(),my_dict.keys()))

我想我需要更多地了解你的情况,才能给出一个合格的答案。你想这样做的原因是什么?所有的键在一个dict中只有一次。只有可散列类型的实例才允许作为键,因此将
=
之间的差异作为目标可能没有多大意义。那么你为什么要做这个比较,你的键是什么,你想做什么样的比较(
=
,…)呢?@Alfe我想对字典的所有元素执行一个操作,但决不对同一个元素执行element@Torxed我不认为这是重复的,OP希望成对处理字典值,避免将同一个键配对到itself@jonrsharpe好的,上面的链接将为您提供一个对象来迭代对键1和键2执行
#操作,而无需检查两个键是否都存在。您可以得到一个键相同的统一字典,如果您只需要uniqueue键,则可以使用相同的方法实现反转。@Torxed当然两个键都存在,
key1
key2
都是同一字典中的键。这个问题是关于单个字典,而不是试图在两个字典中查找键。这将对键而不是值执行
操作。另外请注意,
lambda x:operation(*x)
更简洁。您是对的,无论如何,您可以使用键访问值,但我不喜欢这样,因为它会在整个过程中添加时间复杂度为O(LogN)的组件。
for k1, k2 in itertools.permutations(my_dict, 2):
map(lambda x: operation(x[0], x[1]), itertools.product(my_dict.keys(),my_dict.keys()))