繁体   English   中英

在字典中创建字典,列表

[英]Creating dictionary inside dictionary, list

我有这样的数据:

[
('A','B','Z'),
('A','B','Y'),
('A','B','X'),
('A','C','Z'),
('A','C','Y'),
('A','C','X'),
('D','B','Z'),
('D','B','Y'),
('D','B','X')
]

现在我正在尝试从中创建一个字典,如下所示:

basic_dict = {
    "A" : {
        "B" : ['Z','Y','X'],
        "C" : ['Z','Y','X']
    },
    "D" : {
        "B" : ['Z','Y','X']
    }

我编写了如下代码来实现这一点,但不知何故我没有得到正确的结果:

basic_dict = {}
for i in data_list:
    url_list = []
    batchname_key = i[0]
    scrapid_key = i[1]
    for u in i[2]:
        url_list.append(u)
        basic_dict[batchname_key] = {scrapid_key : url_list}

basic_dict {'A': {'C': ['X']}, 'D': {'B': ['X']}}

第二个问题是如何访问这个字典。

您可以使用dict.setdefault方法遍历data_list和 append url到由batchname_key在由scrapid_key索引的子字典下索引的子字典:

basic_dict = {}
for batchname_key, scrapid_key, url in data_list:
    basic_dict.setdefault(batchname_key, {}).setdefault(scrapid_key, []).append(url)

basic_dict变为:

{'A': {'B': ['Z', 'Y', 'X'], 'C': ['Z', 'Y', 'X']}, 'D': {'B': ['Z', 'Y', 'X']}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM