У меня есть список values, который соответствует определенному keys из словаря, который я создал ранее.

myDict = {1:'A',2:'B',3:'C'}
myList = ['A','A','A','B','B','A','C','C']

Как я могу создать / преобразовать myList в нечто вроде:

myNewList = [1,1,1,2,2,1,3,3]

Может ли кто-нибудь указать мне правильное направление?

Не уверен, что это имеет значение, я создал словарь, используя json в другом скрипте, и сейчас загружаю созданный словарь в свой текущий скрипт.

3
Mike Issa 17 Дек 2015 в 21:34

3 ответа

Лучший ответ

Один простой способ - просто инвертировать myDict, а затем использовать его для отображения нового списка:

myNewDict = {v: k for k, v in myDict.iteritems()}
myNewList = [myNewDict[x] for x in myList]

Также взгляните на это для соглашений об именах Python: Что такое соглашение об именах в Python для имен переменных и функций?

8
Community 23 Май 2017 в 12:30
myDict = {1:'A',2:'B',3:'C'}

myList = ['A','A','A','B','B','A','C','C']

value = [key for i in myList for key, value in myDict.iteritems() if i == value]

print value

Я рекомендую вам прочитать немного о списке сжатия http://docs.python.org.ar/tutorial/3/datastructures.html

1
Jose Enrique Marquez 17 Дек 2015 в 19:03

Это тоже работает:

myNewList = []
for val in myList:
    for key, value in myDict.iteritems():
        if val == value:
        myNewList.append(key)
0
user61026 17 Дек 2015 в 18:51