gpt4 book ai didi

Python:在嵌套字典中为一个键附加多个值

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:50 24 4
gpt4 key购买 nike

我有下面的元组列表:

p = [("01","Master"),("02","Node"),("03","Node"),("04","Server")]

我希望我的输出看起来像:

y = {
"Master":{"number":["01"]},
"Node":{"number":["02", "03"]},
"Server":{"number":["04"]}
}

我试过下面的代码:

y = {}
for line in p:
if line[1] in y:
y[line[1]] = {}
y[line[1]]["number"].append(line[0])
else:
y[line[1]] = {}
y[line[1]]["number"] = [line[0]]

我得到以下错误:

 Traceback (most recent call last):
File "<stdin>", line 4, in <module>
KeyError: 'number'

我该如何解决?

最佳答案

from collections import defaultdict

d = defaultdict(lambda: defaultdict(list))
for v, k in p:
d[k]["number"].append(v)


print(d)

defaultdict(<function <lambda> at 0x7f8005097578>, {'Node': defaultdict(<type 'list'>, {'number': ['02', '03']}), 'Master': defaultdict(<type 'list'>, {'number': ['01']}), 'Server': defaultdict(<type 'list'>, {'number': ['04']})})

没有默认字典:

d = {}
from pprint import pprint as pp
for v, k in p:
d.setdefault(k,{"number":[]})
d[k]["number"].append(v)


pp(d)

{'Master': {'number': ['01']},
'Node': {'number': ['02', '03']},
'Server': {'number': ['04']}}

关于Python:在嵌套字典中为一个键附加多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com