创建字典词典

时间:2019-01-08 02:49:29

标签: python python-3.x

我有以下代码:

list_one = ['a', 'b']
list_two = ['1', '2']
list_three = {}

我最终想要得到的是:

list_three = {
        'a':{1:[], 2:[]},
        'b':{1:[], 2:[]}
    }

我正在尝试一些疯狂的FOR X IN y循环,但没有得到我想要的重用

2 个答案:

答案 0 :(得分:5)

使用nested-dictionary-comprehension:

SELECT  ABS(cast('2019-01-1' AS TIMESTAMP) - CURRENT_TIMESTAMP ) / (1000*60*60*24) LIMIT 100

输出:

print({k:{int(k2):[] for k2 in list_two} for k in list_one})

答案 1 :(得分:2)

您总是可以嵌套collections.defaultdict()的列表:

from collections import defaultdict
from pprint import pprint

list_one = ['a', 'b']
list_two = ['1', '2']

d = defaultdict(lambda : defaultdict(list))

for x in list_one:
    for y in list_two:
        d[x][int(y)]

pprint(d)

这将自动为您初始化一个列表:

defaultdict(<function <lambda> at 0x000002AEA8D4C1E0>,
            {'a': defaultdict(<class 'list'>, {1: [], 2: []}),
             'b': defaultdict(<class 'list'>, {1: [], 2: []})})

然后,您可以将值附加到这些内部列表中,因为defaultdict()为您初始化了空列表。

此外,您还可以在此处使用dict.setdefault()

list_one = ['a', 'b']
list_two = ['1', '2']

d = {}
for x in list_one:
    d.setdefault(x, {})
    for y in list_two:
        d[x].setdefault(int(y), [])

print(d)
# {'a': {1: [], 2: []}, 'b': {1: [], 2: []}}