Python искать словарь по значению в списке и возвращать другое значение из этого словаря - PullRequest
0 голосов
/ 16 июня 2020

Я пытался придумать, как сделать это элегантно в одном лайнере в качестве оператора IF, но ничего не получилось. затем список словарей с различными автомобилями и их атрибутами, например,

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.

Заранее спасибо за любую помощь и предложения!

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете использовать список, чтобы получить все Volvo:

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

Затем, предполагая, что в списке есть только один 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']
0 голосов
/ 16 июня 2020

Я бы посоветовал вам так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...