我有一个字典列表:
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]。
对OP自己的解决方案做一个小改进
next((d['port'] for d in DDD if d['name']=='mouse'), None)
Run Code Online (Sandbox Code Playgroud)
该生成器解决方案具有比列表理解更短路的优点。
None是默认值,如果它没有找到任何东西而不是引发错误,否则你可以简单地next在try/中单独运行except并捕获错误(如果这更适合你)。