Как в словарь добавить списки

Как добавить в словарь списки? У меня получается так

table = {}
idd = []
name = []
address = []


for i in range(2):
    idd.append(i)
    name.append(i+1)
    address.append(i+2)

table = table | { 
        "idd" : idd,
        "name" : name,
        "address" : address
    }
    
print(table["address"][1])

Мне кажется в моем варианте много лишнего, как короче записать можно?


Ответы (2 шт):

Автор решения: CrazyElf

Можно сделать без промежуточных списков. И работать будет в более ранних версиях питона:

table = {
    "idd" : [],
    "name" : [],
    "address" : []
}

for i in range(2):
    table["idd"].append(i)
    table["name"].append(i+1)
    table["address"].append(i+2)
    
print(table["address"][1])
→ Ссылка
Автор решения: Namerek

Что касается самого вопроса то списки в словарь можно добавить так:


key_list = ['ignore', 'error', 'success']
dd = dict.fromkeys(key_list, [])

print(dd)

# {'ignore': [], 'error': [], 'success': []}

Но списки так-же можно формировать в процессе добавления данных. Приблизительно вот так:

from random import randint, choice
from pprint import pprint

dd = dict()

key_list = ['ignore', 'error', 'success']

for _ in range(25):
    key = choice(key_list)
    dd[key] = dd.setdefault(key, []) + [randint(5, 100)]

pprint(dd)

# {'error': [47, 6, 39, 56, 40, 74, 100, 86, 7, 91],
#  'ignore': [87, 32, 67, 72, 53, 22, 42, 28, 28],
#  'success': [24, 52, 100, 94, 47, 93]}

Ваш пример я бы реализовал вот таким образом:

key_list = ['idd', 'name', 'address']

table = dict.fromkeys(key_list, [])

for i in range(2):
    for key in table:
        table[key] = table.setdefault(key, []) + [i]


print(table["address"][1])
print(table)
# 1
# {'idd': [0, 1], 'name': [0, 1], 'address': [0, 1]}
→ Ссылка