Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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_Python 2.7 - Fatal编程技术网

Python 检查字典中是否存在列表项

Python 检查字典中是否存在列表项,python,python-2.7,Python,Python 2.7,如何检查项目为列表的词典中是否存在列表?例如,我有以下词典: dict1 = {0:[0,1,3], 1:[0,2,3]} 例如,[1,0,3]存在于dict1中,并返回相应的键,但是[2,3]不存在于dict1中,在字典中搜索值的一行程序,而不是键是: any(x == <some-value> for x in dict1.itervalues()) 然后,您可以简单地搜索: >>> any(x == set([1, 0, 3]) for x in dict

如何检查项目为列表的词典中是否存在列表?例如,我有以下词典:

dict1 = {0:[0,1,3], 1:[0,2,3]}

例如,
[1,0,3]
存在于
dict1
中,并返回相应的
,但是
[2,3]
不存在于
dict1
中,在字典中搜索值的一行程序,而不是是:

any(x == <some-value> for x in dict1.itervalues())
然后,您可以简单地搜索:

>>> any(x == set([1, 0, 3]) for x in dict1.itervalues())
True
如果不希望将它们存储为集合,并且列表可能包含重复或不可损坏的对象,则可以比较排序后的值。为了在这种情况下提高效率,您应该对搜索值进行预排序:

>>> dict1 = {0: [0, 1, 3]), 1: [0,2,3]}
>>> search_value = sorted([1, 0, 3])
>>> any(sorted(x) == search_value for x in dict1.itervalues())
True

利用一个列表(不是列表列表)将仅与字典的一个值匹配的事实,您可以使用具有默认
None
的生成器表达式:

>>> dict1 = {0:[0, 1, 3], 1:[0, 2, 3]}
>>> lst = [1, 0, 3]
>>> next((k for k, v in dict1.items() if sorted(v) == sorted(lst)), None)
0

您可以在循环或生成器表达式中将每个值转换为排序列表并比较。。。但这真的是你想要的吗?@KlausD。是
[1,0,3]
作为
[0,1,3]
存在于
目录中。列表中的项可以以任何顺序出现。[0,1,3]与[1,0,3]不同。如果列表项目的顺序无关紧要,那么您正在搜索“一个包含列表中所有项目的列表”。@VivekPabani。是的,我知道
[0,1,3]
[1,0,3]
不一样。在我的情况下,顺序并不重要。那么使用集合而不是列表可能会更好。
>>> dict1 = {0:[0, 1, 3], 1:[0, 2, 3]}
>>> lst = [1, 0, 3]
>>> next((k for k, v in dict1.items() if sorted(v) == sorted(lst)), None)
0