Я получаю упорядоченный словарь в переменной python snapshot. Как я могу проверить, существует ли значение 'Operator' в словаре?

OrderedDict([('1111', {'location': 'Nakuru', 'uid': '1111'}), ('lkhsdfalsdkfh', {'designation': 'Operator', 'id': 2, 'location': 'Kisii', 'mobile': '0722112889', 'name': 'Njeri', 'uid': '2222'})])

Я пытался использовать

if thepassword in snapshot.values():

Но, похоже, это не дает мне правильного вывода.

0
Johnn Kaita 24 Ноя 2020 в 18:32

2 ответа

Лучший ответ

Значение Operator - это значение внутри одного из <▪вложенных словарей. Установив флажок in snapshot.values(), вы проверяете, является ли это одним из < sizeskeys. Вам нужно будет сделать:

for d in snapshot.values():
    if thepassword in d.values():
        ...
0
Tomerikoo 24 Ноя 2020 в 15:59

Первый полученный ответ хорош, если вам не нужно знать, где находится значение в snapshot, а знать только то, что оно существует. Этот код возвращает кортеж с двумя ключами, необходимыми для перехода к искомому значению:

keys = None
for okey, oval in snapshot.items():
    revDict = dict((v, k) for k, v in oval.items())
    if 'Operator' in revDict:
        keys = (okey, revDict['Operator'])
        break
print(keys)

Результат:

('lkhsdfalsdkfh', 'designation')
-1
Steve 24 Ноя 2020 в 16:08
64989700