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)
如果您使用的是 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)
| 归档时间: |
|
| 查看次数: |
55643 次 |
| 最近记录: |