Один символ (item[0]
) не может быть равен списку всех dict.keys()
, который будет ['A','B','C']
:
if item[0] == list(mydict.keys()):
Необходимо проверить,item[0]
- это in
дикт:
mylist = [['A',4,2,5], ['C',3,9,5], ['D',2,5,6]]
mydict = {'A' : 2, 'B' : 6, 'C' : 3}
mylist2 = []
for item in mylist:
key, *vals = item # split into key and rest of list
if key in mydict:
mylist2.append([key]) # create new list, append it, fill it with key
for val in vals:
mylist2[-1].append(val/mydict[key]) # add the other numbers to last inner list
else:
mylist2.append(item[:]) # add a copy of item
print(mylist2)
Вывод:
[['A', 2.0, 1.0, 2.5], ['C', 1.0, 3.0, 1.6666666666666667], ['D', 2, 5, 6]]
Это «длинная» версия - вы можете уменьшить ее, используя dict.get(key,1)
который возвращает значение ключа или 1 по умолчанию и список комп для того, чтобы сделать его «гладким» - см. Tobias_k решение