Python如何将字典追加到嵌套字典中(按首字母分类字典元素)
问题修正
你给出的预期结果存在Python语法错误:
- 花括号
{}在Python中仅两种用途:存储键值对的字典、存储可哈希元素的集合 - 字典类型本身不可哈希,无法作为集合元素存储,因此分类下存储多个元素应该用列表
[]结构
修正后的合法预期结构如下:
foo = { "a": [ {"name": "alpha"}, {"name": "apple"} ], "b": [ {"name": "bravo"} ], "c": [ {"name": "charlie"}, {"name": "chucky"} ] }
实现说明
你之前用update()方法没成功的核心原因有两个:一是初始化foo时给每个分类赋值为空字典,无法存储多个元素;二是update()是字典合并方法,本身不适合做元素追加操作。
正确实现逻辑:
- 把
foo中每个分类的初始值改为空列表,用于存放同首字母的字典元素 - 遍历
names列表的每一个元素 - 取出每个元素
name字段值的首字母,将当前元素追加到对应分类的列表中
可直接运行的代码
names = [{"name":"alpha"}, {"name":"apple"}, {"name":"bravo"}, {"name":"charlie"}, {"name":"chucky"}] foo = { "a": [], "b": [], "c": [] } for item in names: # 取name字段的首字母,转小写避免大写首字母匹配失败 first_char = item["name"][0].lower() if first_char in foo: foo[first_char].append(item)
运行后打印foo就能得到目标分组结果。如果后续需要支持不在a/b/c范围内的首字母自动新建分类,可以把初始化逻辑改成动态生成,不用提前写死三个分类键。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

