如何将词典"append"嵌套词典

  • 本文关键字:嵌套 append python python-3.x
  • 更新时间 :
  • 英文 :


我试图根据名称的第一个字母将列表names中的每个字典分离到它们自己的类别。我对编码很陌生,我尝试过使用其他功能,如update,但我没有成功地实现最终结果。我不知道如何在嵌套字典中添加字典。

names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, {"name":"charlie"}, {"name":"chucky"}]
foo = {
"a" : {},
"b" : {},
"c" : {}
}

最终结果应该是:

foo = {
"a" : {
{"name":"alpha"},
{"name":"apple"}
},
"b" : {
{"name":"bravo"}
},
"c" : {
{"name":"charlie"},
{"name":"chucky"}
}
}

字典是键值对,所以你想要的输出是不可能的。

字典键必须是唯一的,所以使用一个已经存在的键在字典上调用update只会覆盖这个值。

听起来你想要的是一个列表作为嵌套结构,像这样:

foo = {}
for item in names:
char = item["name"][0]
try:
foo[char].append(item)
except KeyError:
foo[char] = [item]
print(foo)

输出
foo = {
"a" : [
{"name":"alpha"},
{"name":"apple"}
],
"b" : [
{"name":"bravo"}
],
"c" : [
{"name":"charlie"},
{"name":"chucky"}
]
}

#try this
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, 
{"name":"charlie"}, {"name":"chucky"}]
foo = {
"a" : {},
"b" : {},
"c" : {}
}
for keys in foo.keys():
lists=[]
for name in names:
for key,val in name.items():
if val[0].lower()==keys.lower():
lists.append(name)
foo[keys]=lists
print(foo)

**兄弟,你犯了什么错误:

"a" : {
{"name":"alpha"},
{"name":"apple"}
}

-dict总是接受键和值对而不仅仅是值,因为它是如果将来你尝试在没有键的情况下追加dict,那么总是使用list不是dict * *

foo = {
"a" : [
{"name":"alpha"},
{"name":"apple"}
],
"b" : [
{"name":"bravo"}
],
"c" : [
{"name":"charlie"},
{"name":"chucky"}
]
}

下面的字典无效,因为不能用逗号分隔字典作为另一个字典的唯一内容。字典应该包含键、值对。

foo = {
"a" : {
{"name":"alpha"},
{"name":"apple"}
},
"b" : {
{"name":"bravo"}
},
"c" : {
{"name":"charlie"},
{"name":"chucky"}
}
}

例如在下面的键中,值对a是键,直到这部分都可以。{{"name":"alpha"},{"name":"apple"}}部分的问题是在另一个字典中使用逗号分隔字典,这将导致错误TypeError: unhashable type: 'dict'

"a" : {
{"name":"alpha"},
{"name":"apple"}
},

但是,您可以使用一个字典列表作为键的值。

您可以使用下面的方法创建一个。

import json
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, {"name":"charlie"}, {"name":"chucky"}]
foo = {}
for item_dict in names:
val = item_dict["name"]
foo.setdefault(val[0], []).append(item_dict)
print(json.dumps(foo, indent=2))

这将输出:

{
"a": [
{
"name": "alpha"
},
{
"name": "apple"
}
],
"b": [
{
"name": "bravo"
}
],
"c": [
{
"name": "charlie"
},
{
"name": "chucky"
}
]
}

最新更新