比较两个词典的关键值和返回值如果匹配

yre*_*ehs 13 python dictionary

我是Python的初学者,但我一直在尝试这种语法,我无法弄明白 - 这真是令人费解.

crucial = {'eggs': '','ham': '','cheese': ''}
dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}

if crucial.keys() in dishes.keys():
    print dishes[value]
Run Code Online (Sandbox Code Playgroud)

我想要做的是 - 如果关键在盘子里有一把钥匙(在这种情况下eggs),它会回来2.这看起来很简单,但我相信我必须在某处弄乱某种类型的语法.如果有人可以指导我一点,那将非常感激.

我正在比较的真实词典大约有150个键,但我希望这段代码足够简单.

tim*_*imc 16

您需要迭代重要的键并将每个键与菜肴键进行比较.所以直接修改了你的代码版本.

for key in crucial.keys():
    if key in dishes.keys():
        print dishes[key]
Run Code Online (Sandbox Code Playgroud)

它可以更好地说明(不需要指定.keys):

for key in crucial:
    if key in dishes:
        print dishes[key]
Run Code Online (Sandbox Code Playgroud)


Blc*_*ght 6

如果您使用的是 Python 3,则keys字典的方法遵循set接口。这意味着您可以使用&运算符对两个字典的键进行交集。

for key in crucial.keys() & dishes.keys():
    print(dishes[key])
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要值列表:

result = [dishes[key] for key in crucial.keys() & dishes.keys()]
Run Code Online (Sandbox Code Playgroud)

在 Python 2 中,您可以通过显式创建集合(可能来自iterkeys生成器)来管理相同的事情,但可能最好简单地对键进行循环,就像其他几个答案所建议的那样。

这是循环的一个变化,我认为我没有见过其他人这样做。外循环从dishes字典中获取键和值,因此您不需要单独按键查找值。

for key, value in dishes.iteritems(): # use items() in Python 3
    if key in crucial:
        print value
Run Code Online (Sandbox Code Playgroud)