我创建了一个具有如下结构的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'
的值是否与其他键的值匹配。有写这个的简短方法吗?
答案 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))