Как назначить слова значениям в списке? - PullRequest
2 голосов
/ 15 октября 2019

У меня есть список с 4 различными номерами, всего 10 номеров. Каждому из этих чисел я хочу назначить цвет / слово. Таким образом, вопрос заключается в том, как перейти от списка чисел к списку цветов, где каждое одинаковое число представлено одним и тем же цветом / словом?

Исходный список:

my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]

Ожидаемый результат:

print(my_list) -> ['red', 'blue', 'green', 'blue', 'black', 'red', 'green', 'red', 'green', 'blue']

Что я пробовал?

Я извлек уникальные номера из my_list:

my_list = [72,50,3,50,72,3,72,3,50]

UniqueList = list(set(my_list))
print(UniqueList)

Теперь мне нужно назначить цвет из списка цветов ['красный', 'синий', 'зеленый', 'черный', 'желтый', 'фиолетовый'] для каждого из этих 4 уникальных чисел, а затем снова сгенерировать my_listс цветами. К сожалению, я понятия не имею, как идти вперед. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Вы можете создать словарь поиска:

my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
colors = ['red', 'blue', 'green', 'black', 'yellow', 'purple']

lookup = dict(zip(set(my_list), colors))
output = [lookup[number] for number in my_list]
print(output)

Вывод

['red', 'green', 'black', 'green', 'blue', 'red', 'black', 'red', 'black', 'green']

Вы можете рассматривать словарь lookup как функцию, которая назначает цветна один из номеров. В приведенном выше примере поиск имеет следующее значение:

{72: 'red', 16: 'blue', 50: 'green', 3: 'black'}

Это означает, что он будет присваивать 'red' каждый раз, когда появляется 72. Вы можете настроить lookup следующим образом:

lookup = {72 : 'green', 50 : 'black', 3 : 'yellow', 16: 'purple'}

На этот раз каждый раз, когда появляется 72, будет назначено green. Подробнее о том, как создать словари в , см. Здесь .

Обновление

Если вы хотите сохранить порядок появления в списке, вы можетеследующее:

seen = set()
result = []
for e in my_list:
    if e not in seen:
        result.append(e)
        seen.add(e)

print(result)

Вывод

[72, 50, 3, 16]

Обратите внимание, что список result находится в порядке появления.

1 голос
/ 15 октября 2019

Вы также можете указать слова пары значений ключа {int: color} и затем выполнить следующие действия:

my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
mymap = {72: 'red', 50:'blue', 3:'green', 16:'black'}

print([mymap[k]for k in my_list])

## output
['red', 'blue', 'green', 'blue', 'black', 'red', 'green', 'red', 'green', 'blue']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...