#python #list #dictionary
Вопрос:
Мне нужно повторить ряд чисел (например, 2-6), внести диапазон каждого числа в список и после этого сохранить каждое число в качестве ключа, а его диапазон в качестве значения в словаре. Мой вывод должен быть: dicti={2:[1], 3:[1,2],4:[1,2,3],5:[1,2,3,4]}
или dicti={[2]:[1], [3]:[1,2],[4]:[1,2,3],[5]:[1,2,3,4]}
.
Как я могу это сделать? Я начал, как показано ниже, но, по-видимому, то, что я пытаюсь сделать, не работает.
for i in list(range (2,6)):
for j in list(range(1,i)):
zipped=zip(i,j)
Кто-нибудь может мне помочь?
Комментарии:
1. @OmG Список комп. это здорово и питонически. Мой использует defaultdict, чтобы получить тот же результат. проверить это.
Ответ №1:
Вы можете легко это сделать, выполнив итерацию по указанному диапазону:
result = dict((x, list(range(1, x))) for x in range(2,6))
запустите его в Интернете.
Комментарии:
1. @DanielHao Правильно. Изменено
range(x)
наrange(1,x)
.
Ответ №2:
Есть и другой способ — с помощью defaultdict
:
from collections import defaultdict
dd = defaultdict(list)
for i in range(2, 6):
for j in range(1, i):
dd[i].append(j)