Распечатать ключ, используя значение словаря - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть матрица a=[0, 4, 8] и что найти, какие ключи в словаре d = {"a":0, "b":1, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9, "j":10} имеет значения в матрице а.

У меня есть следующий код:

for i in a:
    [key for key, value in d.items() if value == i]
    print(key)

Однако при запуске этого кода я получаю следующее сообщение:

ValueError: Значение истинности массива с более чем одним элементом является неоднозначным. Используйте a.any () или a.all ().

Я пытался добавить .any () и .all () за массивом, но это не работает.

Кто-нибудь знает, как я могу решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 19 апреля 2020

Вы можете просто переформатировать свой код следующим образом:

a = [0, 4, 8]
d = {"a":0, "b":1, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9, "j":10}

keys = [key for key in d.keys()if d[key] in a ]
print(keys)
# Output ['a', 'd', 'h']
0 голосов
/ 19 апреля 2020

Вы можете получить ключ заданного значения с помощью метода индексации .

Код

a=[0, 4, 8]   #matrix a
d = {'a':0, 'b':1, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'h':8, 'i':9, 'j':1}   #dictionary d

values = list(d.values())  #generating values list
keys = list(d.keys())    #generating keys list
for i in a:      #iterating over the elements of matrix or list a
    if i in values:    #chck whether the value in the dictionary
        print("Key for",i,"is",keys[values.index(i)])    #displaying result

Вывод:

Key for 0 is a
Key for 4 is d
Key for 8 is h

Надеюсь, это будет полезно.

0 голосов
/ 19 апреля 2020

Вероятно, самый простой:

for k, v in d.items():
    if v in a:
        print(k)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...