Python字典检查值是否与其他键值匹配

时间:2018-09-05 20:10:44

标签: 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'的值是否与其他键的值匹配。有写这个的简短方法吗?

3 个答案:

答案 0 :(得分:0)

您可以简单地遍历mydict的期望值,然后针对每个期望值检查其是否存在于字典的任何值中

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

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

考虑到这是一种蛮力算法,对于较大的词典来说,它可能不是最佳解决方案

答案 1 :(得分:0)

问题很模糊,所以我假设您希望目标月份(例如2018-08)中包含在其他月份中某个位置的值。

与列表迭代相比,用于测试成员资格的集合要快得多。

target = '2018-08'
s = set()
for k, v in mydict.iteritems():
    if k != target:
        s.update(v)
matches = set(mydict[target]) & s

答案 2 :(得分:0)

可以使用itertools.chain创建长列表

@QAFTestStep

通过更改您提供的输入来试运行

public class TestDataProdivider {

   @QAFTestStep(description = "I am on fruits and colors activity")
   public void test(){
      System.out.println("I am on fruits and colors activity");
   }

   @QAFTestStep(description = "i select {fruit}")
   public void testfruit(String fruit){
      System.out.println(fruit);
   }

   @QAFTestStep(description = "the color should be {color}")
   public void testcolor(String color){
      System.out.println(color);
   }
} 

输出:

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))