У меня есть следующий словарь в Python:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
Мне нужен способ узнать, существует ли в этом словаре значение типа «один» или «два».
Например, если бы я хотел узнать, существует ли индекс «1», мне просто нужно было бы набрать:
"1" in d
И тогда python скажет мне, является ли это истиной или ложью, однако мне нужно сделать то же самое, за исключением того, чтобы найти, существует ли значение.
python
dictionary
find
JimmyK
источник
источник
d
, сроки фактически бессмысленны. В Python 3dict.values()
есть представление словаря, по умолчанию иdict.itervalues()
иdict.viewvalues()
ушли. Вы можете повторно протестировать это (с большим словарем) и использовать,list(d.values())
чтобы получить поведение Python 2 иiter(d.values())
получитьdict.itervalues()
поведение, но, поскольку обе эти версии требуют глобального поиска и вызова, они будут абсолютно медленными. Оба делают дополнительную работу, которая не нужна.Ты можешь использовать
проверить, если
"one"
среди значений вашего словаря.источник
Словарь Python имеет функцию get (key)
Например,
Если ваш ключ не существует, вернет
none
значение.Содержимое относится к версиям ниже 3.0 и выше 5.0. ,
источник
key:value
и не ключ.Используйте представления словаря:
источник
Существуют разные типы для проверки значений
Что делать, если список значений
Что делать, если список значений со строковыми значениями
источник
value in [... list comprehension over sequence ...]
, используйтеany(value in sequence ...)
, чтобы избежать создания объекта списка, который вы не используете ни для чего другого, и для короткого замыкания, когда значение найдено.В Python 3 вы можете использовать
values()
функцию словаря. Возвращает объект просмотра значений. Это, в свою очередь, может быть переданоiter
функции, которая возвращает объект итератора. Итератор может быть проверен с помощьюin
, как это,Или вы можете использовать объект просмотра напрямую, так как он похож на список
источник
iter()
в словарном представлении;in
будет уже использовать объект как итеративный (тип не реализует выделенный__contains__
метод). Единственная разница между'one' in iter(d.values())
и'one in d.values()
заключается в том, что вы заставили Python выполнять дополнительную работу (оплачивая стоимость глобального поискаiter
).