Подтвердить что ты не робот

Отображение значения словаря в списке

Учитывая следующий словарь:

dct = {'a':3, 'b':3,'c':5,'d':3}

Как я могу применить эти значения к списку, например:

lst = ['c', 'd', 'a', 'b', 'd']

чтобы получить что-то вроде:

lstval = [5, 3, 3, 3, 3]
4b9b3361

Ответ 1

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

>>> map(dct.get, lst)
[5, 3, 3, 3, 3]

Используя понимание :

>>> [dct[k] for k in lst]
[5, 3, 3, 3, 3]

Ответ 2

Вы можете использовать для этого следующее:

lstval = [ dct.get(k, your_fav_default) for k in lst ]

Я лично предлагаю использовать списки для встроенного map, потому что он выглядит знакомым всем программистам на Python, проще разбирать и расширять его, если требуется значение по умолчанию.

Ответ 3

Вы можете перебирать ключи из списка с помощью функции map:

lstval = list(map(dct.get, lst))

Или, если вы предпочитаете понимание списка:

lstval = [dct[key] for key in lst]

Ответ 4

lstval = [d[x] for x in lst]

Не называйте словарь dict. dict - это имя типа.

Ответ 5

Не используйте имя переменной dict как оно было встроено.

>>> d = {'a':3, 'b':3,'c':5,'d':3}
>>> lst = ['c', 'd', 'a', 'b', 'd']
>>> map(lambda x:d.get(x, None), lst)
[5, 3, 3, 3, 3]

Ответ 6

Я бы воспользовался списком:

listval = [dict.get(key, 0) for key in lst]

Часть .get(key, 0) используется для возврата значения по умолчанию (в этом случае 0), если в dict не существует элемента с этим ключом.

Ответ 7

В документации Python 3:

Итак, zip(*d.items()) дайте свой результат.

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

print(d.items())        # [('a', 1), ('c', 3), ('b', 2), ('d', 4)] in Python 2
                        # dict_items([('a', 1), ('c', 3), ('b', 2), ('d', 4)]) in Python 3

print(zip(*d.items()))  # [('a', 1), ('c', 3), ('b', 2), ('d', 4)] in Python 2
                        # <zip object at 0x7f1f8713ed40> in Python 3

k, v = zip(*d.items())
print(k)                # ('a', 'c', 'b', 'd')
print(v)                # (1, 3, 2, 4)