Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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,我创建了一个python字典,其结构如下:- mydict = {'2018-08' : [32124,4234,23,2323,32423,342342], '2018-07' : [13123,23424,2,3,4343,4232,2342], '2018-06' : [1231,12,12313,12331,3123131313,434546,232]} 我想检查键'2018-08'的值中是否有任何值与其他键的任何值匹配。有没有一个简单的方法来写

我创建了一个python字典,其结构如下:-

mydict = {'2018-08' : [32124,4234,23,2323,32423,342342],
          '2018-07' : [13123,23424,2,3,4343,4232,2342],
          '2018-06' : [1231,12,12313,12331,3123131313,434546,232]}

我想检查键
'2018-08'
的值中是否有任何值与其他键的任何值匹配。有没有一个简单的方法来写这篇文章?

您可以简单地循环您的预期值
mydict
,然后针对每个值检查它是否存在于字典的任何值中

您可以使用成语
if-item-in-list
检查列表中是否存在item
item

expected_values = mydict['2018-08']
found = False
for expected in expected_values:
  for key in mydict:
    if expected in mydict[key]:
      found = True
      break

考虑到这是一种蛮力算法,可能不是大型词典的最佳解决方案

问题很模糊,因此我假设您希望目标月份(如2018-08)的值包含在其他月份的某个地方

与列表迭代相比,集合测试成员身份的速度要快得多

target = '2018-08'
s = set()
for k, v in mydict.iteritems():
    if k != target:
        s.update(v)
matches = set(mydict[target]) & s
可以使用创建一个长列表

import itertools
for key,value in mydict.items():
    temp_dict = mydict.copy()
    temp_dict.pop(key)
    big_value_list=list(itertools.chain(*temp_dict.values()))
    print(key, set(value) & set(big_value_list))
通过更改提供的输入进行试运行

mydict = {'2018-08' : [32124,4234,23,2323,32423,342342],
          '2018-07' : [13123,23424,2,3,4343,4232,2342],
          '2018-06' : [1231,12,12313,12331,3123131313,434546,232,342342,2342]}
输出:

('2018-08', set([342342]))
('2018-07', set([2342]))
('2018-06', set([342342, 2342]))

编辑您的问题以将
dict
更改为
mydict
。使用一个隐藏内置python类型的变量名总是一个坏主意。您自己也尝试过吗?你能展示一下你试过的吗?你说的比赛是什么意思?所有的价值观都一样吗?一些相同的值?请创建一个具有所需输出的列表,除非列表以某种方式排序(即从大到小或按字母顺序排列),否则我认为除了暴力强制之外没有其他方法