【发布时间】:2014-10-16 13:59:31
【问题描述】:
我正在输入一本字典,可能类似于:
myWorld = {'MH': {'Mumbai': 1, 'Pune': 2}, 'GUJ': 3, 'RSA': {} }
我的测试词典是:
World = {'MH': {'Mumbai': 1, 'Pune': 2}, 'GUJ': 3, 'RSA': {}, 'USA': 4, 'UK': 5 }
我想检查一个条件,如果我在myWorld 中输入的任何内容在World 中不存在,它应该打印NotFound
for key, val in myWorld.iteritems():
if (key, val) not in (World.keys(), World.values()) in World.iteritems():
print "NotFound"
else:
print "Correct"
但这似乎不是正确的方法。无论我输入什么字典,我都会得到NotFound,即使它是"{'RSA':{}}"。我是python新手,所以不太了解它。谁能告诉这是哪里出了问题以及如何解决它?
Dictionaries =
{
'A':{}'B':{}, 'C':{}, 'D':{}, 'myWorld' : {'id':1, 'name': 10},
{'id':2, 'name': 20},
{'id':3, 'name': 30},
{'id':4, 'name': 40},
{'id':5, 'name': 50}
}
我正在运行 tests 和 classes。
A, b, C, D, myWorld 在这里是classes。
我像mytest.py "{'A':{}}" 一样运行我的测试
mytest.py "{'myWorld' : {'id':1, 'name': 10}}"
或
mytest.py "{'myWorld' : {'id':2, 'name': 20}}"
因此,我使用mytest.py 输入的论点,我将它保存在 l 中。
其中l = ast.literal_eval(args[0])
现在当我不想运行不必要的测试时,我正在做
if all(key in Dictionaries and Dictionaries[key] == key and value for key, value in l.iteritems()):
proceed
else:
exit(1)
现在有了这里给出的 if 语句的建议,它总是变成真的,我总是在键和值组合错误的情况下继续。
例如,即使我这样做mytest.py 'myWorld' : {'id':1, 'name': 12}
我不想那样。我希望它只针对Dictionaries中提到的可能性运行
【问题讨论】:
-
如果存在任意数量的不匹配,您是想只打印一次“NotFound”,还是为每个缺失的键/值对打印一次?
-
key 和 value 必须匹配还是只匹配一个键或一个值?
-
我想在键与
World字典中的相应值不匹配时打印 not found 所以当我输入{'MH': {Mumbai: 1, 'Pune': 2}}和NotFound时它应该打印Correct987654346@/{'MH': {}} -
您的一些键和值是嵌套的,您必须展平才能比较所有键
标签: python if-statement for-loop dictionary compare