我有以下代码:
list_one = ['a', 'b']
list_two = ['1', '2']
list_three = {}
我最终想要得到的是:
list_three = {
'a':{1:[], 2:[]},
'b':{1:[], 2:[]}
}
我正在尝试一些疯狂的FOR X IN y循环,但没有得到我想要的重用
答案 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: []}}