Найти конкретное значение из списка словаря в Python

У меня есть следующие данные в моем списке словаря:

data = [{'I-versicolor': 0, 'Sepal_Length': '7.9', 'I-setosa': 0, 'I-virginica': 1},
{'I-versicolor': 0, 'I-setosa': 1, 'I-virginica': 0, 'Sepal_Width': '4.2'},
{'I-versicolor': 2, 'Petal_Length': '3.5', 'I-setosa': 0, 'I-virginica': 0},
{'I-versicolor': 1.2, 'Petal_Width': '1.2', 'I-setosa': 0, 'I-virginica': 0}]

И чтобы получить список на основе ключа и значения, я использую следующее:

next((item for item in data if item["Sepal_Length"] == "7.9"))

Тем не менее, весь словарь не содержит ключ Sepal_Length, Я получаю:

KeyError: 'Sepal_Length'

Как я могу решить это?

1 ответ

Решение

Ты можешь использовать dict.get чтобы получить значение:

next((item for item in data if item.get("Sepal_Length") == "7.9"))

dict.get как dict.__getitem__ кроме того, что это возвращает None (или другое значение по умолчанию, если оно указано), если ключ отсутствует.


В качестве бонуса, вам не нужны лишние скобки здесь вокруг выражения генератора:

# Look mom, no extra parenthesis!  :-)
next(item for item in data if item.get("Sepal_Length") == "7.9")

но они помогают, если вы хотите указать значение по умолчанию:

next((item for item in data if item.get("Sepal_Length") == "7.9"), default)
Другие вопросы по тегам