Как использовать len () в списке словаря для умножения на 10 в python - PullRequest
0 голосов
/ 26 апреля 2020

Можно ли умножить мой словарь на 10, используя len () и циклы?

Мне нужно

my_dict={"Plants":[20, 30, 20], "Flowers":[46, 70, 57], "Trees":[14, 52, 10]

, чтобы стать

my_dict={"Plants":[200, 300, 200], "Flowers":[460, 700, 570], "Trees":[140, 520, 100]

Я знаю Я могу получить это таким образом, но я хотел бы использовать len (), если это возможно

ten = 10
for value in my_dict:
        my_dict[value][0] *=ten
        my_dict[value][1] *=ten
        my_dict[value][2] *=ten

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Вы можете написать еще один l oop поверх значений в списках, и если вы хотите сделать это по индексу, вы бы использовали len. orlp s answer показывает, как это выглядит. Но есть несколько лучших способов, которые не используют len напрямую.

Первый вариант - использовать enumerate для получения индексов в списках, пока вы перебираете значения:

for lst in my_dict.values():
    for index, value in enumerate(lst):
        lst[index] = value * 10

Другой вариант - воссоздать списки полностью, используя их понимание. Это вообще не будет включать никаких индексов, хотя вам нужны ключи для словаря, а не только значения списка:

for key, lst in my_dict.items():
    my_dict[key] = [value*10 for value in lst]
0 голосов
/ 26 апреля 2020

То, что вы хотите использовать, является вложенным l oop:

for li in my_dict.values():
   for i in range(len(li)):
     li[i] *= 10
...