一行返回包含另一个键值的列表中第一个字典中的字典键值

rob*_*ach 1 python dictionary

我有一个字典列表:

DDD=[
  {'name': 'dog', 'port': 2020, 'id': 123},
  {'name': 'cat', 'port': 4242, 'id': 456},
  {'name': 'mouse', 'port': 3333, 'id': 789}
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个单行 python 命令来获取'port'值为 的 dict'name'的值'mouse'

我意识到实际上可能有多个值,并且只需要第一个值。(我知道它们是独一无二的)

就像是:

d['port'] for d in DDD if d['name'] is 'mouse'
Run Code Online (Sandbox Code Playgroud)

我很高兴它成为一个列表并抓住第一个[0]

jam*_*lak 5

对OP自己的解决方案做一个小改进

next((d['port'] for d in DDD if d['name']=='mouse'), None)
Run Code Online (Sandbox Code Playgroud)

该生成器解决方案具有比列表理解更短路的优点。 None是默认值,如果它没有找到任何东西而不是引发错误,否则你可以简单地nexttry/中单独运行except并捕获错误(如果这更适合你)。