Я хочу передать полный массив в словарь в качестве ключей и получить значения:

dic = {1:'a', 2:'b', 3:'c'}
lista = [1,2,3]

dic.get(1)
'a'

dic.get(list)
error

Благодарность

2
tincan 19 Янв 2022 в 19:14
Я знаю, что не могу использовать список как переменную, пожалуйста, представьте, что это список (я также знаю, что это массив)
 – 
tincan
19 Янв 2022 в 19:15

4 ответа

Здесь можно использовать operator.itemgetter.

from operator import itemgetter

dic = {1:'a', 2:'b', 3:'c'}
lst = [1, 2, 3]
itemgetter(*lst)(dic)
# ('a', 'b', 'c')
3
Ch3steR 19 Янв 2022 в 19:20
1
Это кажется быстрее, чем у меня... спасибо за это!
 – 
Vivek Kalyanarangan
19 Янв 2022 в 19:19
Спасибо. Я не засекал время, но приятно знать :)
 – 
Ch3steR
19 Янв 2022 в 19:21

Использование -

dic = {1:'a', 2:'b', 3:'c'}
list_ = [1,2,3]

a = [dic.get(k) for k in list_]

@Ch3steR

453 ns ± 192 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

--> этот

888 ns ± 430 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
3
Vivek Kalyanarangan 19 Янв 2022 в 19:23

В пандах это называется функцией карты:

lista = lista.map(dic)

Ура

0
tincan 19 Янв 2022 в 19:22
Является ли объект серии lista?
 – 
Ch3steR
19 Янв 2022 в 19:19

Мы можем сделать map

[*map(dic.get,lista)]
Out[270]: ['a', 'b', 'c']
0
BENY 19 Янв 2022 в 19:28