Как заменить элементы списка соответствующим значением из словаря в этом примере? Использование python

#python

Вопрос:

У меня есть этот список:

[‘79.9’, ‘79.9’, ‘79.9’, ‘79.9’, ‘103.2’, ‘103.2’]

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

 ValueDict = {
    "243": "0",
    "219.70000000000002": "1",
    "196.4": "2",
    "173.1": "3",
    "149.79999999999998": "4",
    "126.5": "5",
    "103.2": "6",
    "79.9": "7",
    "56.59999999999999": "8",
    "33.3": "9",
    "10": "10",
}
 

Таким образом, результатом будет список, подобный этому:
[7, 7, 7, 7, 6, 6]

Как я могу это сделать?

Комментарии:

1. Что вы уже пробовали / исследовали; и с какой проблемой вы сталкиваетесь?

2. Знакомы ли вы с пониманием списков и поиском значения в словаре?

3. for i in range(len(list)): list_key = list[i] n list[i] = ValueDict[list_key]

Ответ №1:

 final_list = [ValueDict[i] for i in your_list if i in ValueDict]
 

Ответ №2:

Используйте enumerate для добавления счетчика в список, затем проверьте, есть ли элемент в словаре, и вызовите значение

 for i,j in enumerate(l):
    if j in ValueDict:
        l[i]=ValueDict[j]
print(l)
 

Выход:

 ['7', '7', '7', '7', '6', '6']
 

Ответ №3:

Вы могли бы сделать это с пониманием списка.

 final_list = [ValueDict[value] for value in my_list] 
 

Ответ №4:

 a = ['79.9', '79.9', '79.9', '79.9', '103.2', '103.2']
b = {
    "243": "0",
    "219.70000000000002": "1",
    "196.4": "2",
    "173.1": "3",
    "149.79999999999998": "4",
    "126.5": "5",
    "103.2": "6",
    "79.9": "7",
    "56.59999999999999": "8",
    "33.3": "9",
    "10": "10",
}
c = [b.get(i, i)for i in a]
c
['7', '7', '7', '7', '6', '6']
 

Ответ №5:

Это должно сработать:

 [int(ValueDict[x]) for x in list1] 
 

[7, 7, 7, 7, 6, 6]

🙂

Ответ №6:

что-то вроде приведенного ниже

 lst = ['79.9', '79.9', '79.9', '79.9', '103.2', '103.2']
ValueDict = {
    "243": "0",
    "219.70000000000002": "1",
    "196.4": "2",
    "173.1": "3",
    "149.79999999999998": "4",
    "126.5": "5",
    "103.2": "6",
    "79.9": "7",
    "56.59999999999999": "8",
    "33.3": "9",
    "10": "10",
}
new_lst = [ValueDict.get(x,'-1') for x in lst]
print(new_lst)
 

Комментарии:

1. Это может привести к ошибке, если значение отсутствует в словаре

2. В зависимости от потребностей это может быть лучше, чем возвращать неполный результирующий список.