簡體   English   中英

Python 按列表中的值查找字典並返回與該字典不同的值

[英]Python lookup dictionary by value in list and return a different value from that dictionary

我一直試圖弄清楚如何在一個 IF 語句中優雅地做到這一點,但沒有什么運氣。

我有以下內容 - 一個查找值,比如說 VOLVO,然后是一個包含各種汽車及其屬性的字典列表,例如

car_list = [{'MODEL': 'VOLVO', 'COLOUR': 'RED', 'MANUAL': True},
            {'MODEL': 'FORD', 'COLOUR': 'BLUE', 'MANUAL': False}]

所以我想要實現的是一個 IF 語句,上面寫着:IF VOLVO IS MANUAL。 所以基本上使用 VOLVO 查找然后返回 MANUAL 鍵的值。

希望這是有道理的。 我知道可以通過以下方式實現:

result = next(item for item in car_list if item["MODEL"] == "VOLVO")
if result['MANUAL']:
    pass

但如果可能的話,我想在一行 IF 語句中干凈利落地做到這一點。

提前感謝您的任何幫助和建議!

您可以使用列表推導來獲取所有沃爾沃:

[car for car in car_list if car['MODEL'] == 'VOLVO']

然后,假設列表中只有一輛沃爾沃,您需要列表中的第一輛(也是唯一一輛)汽車:

[car for car in car_list if car['MODEL'] == 'VOLVO'][0]

然后,您需要該車的 MANUAL 值:

[car for car in car_list if car['MODEL'] == 'VOLVO'][0]['MANUAL']

我建議你這樣:

car_list = [{'MODEL': 'VOLVO', 'COLOUR': 'RED', 'MANUAL': True},
            {'MODEL': 'FORD', 'COLOUR': 'BLUE', 'MANUAL': False}]

for car in car_list:
    if car.get('MANUAL',-1) == True:
        print('yes')
        pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM