python - 如何在不创建新键的情况下访问 for 循环中的现有 dict 键?
问题描述
我有一个像这样的字典列表
names = [{'id':1, 'name': 'Alice', 'dep_name':'Pammy', 'is_dep_minor':True, 'is_insured':False},
{'id':2, 'name': 'Alice', 'dep_name':'Trudyl', 'is_dep_minor':False, 'is_insured':True},
{'id':3, 'name': 'Bob', 'dep_name':'Charlie', 'is_dep_minor':True, 'is_insured':True},]
我想创建一个新的统一字典,其中包含稍后将填充的新属性。当 Alice 可以嵌套在里面时,我计划消除对 Alice 的两个 dicts 的需要。这就是我到目前为止所拥有的。
results = []
for name in names:
newdict = defaultdict(dict)
newdict[name[name]]["NEWKEY"] = None # to be filled in later
newdict[name[name]]["ANOTHERKEY"] = None # to be filled in later
innerdict = defaultdict(dict)
innerdict["dep_name"]["is_minor"] = name["is_dep_minor"]
innerdict["dep_name"]["is_insured"] = name["is_insured"]
newdict[name[name]]["DEPENDENTS"] = innerdict
results.append(newdict)
这给了我
[
{
"Alice" : {
"NEWKEY" : None,
"ANOTHERKEY" : None,
"DEPENDENTS" : {
"Pammy" : {
"is_minor" : True,
"is_insured" : False
}
}
}
},
{
"Alice" : {
"NEWKEY" : None,
"ANOTHERKEY" : None,
"DEPENDENTS" : {
"Trudy" : {
"is_minor" : False,
"is_insured" : True
}
}
}
},
# and the list goes on
]
我的目标是
{
"Alice" : {
"NEWKEY" : None,
"ANOTHERKEY" : None,
"DEPENDENTS" : {
"Pammy" : {
"is_minor" : True,
"is_insured" : False
},
"Trudy" : {
"is_minor" : False,
"is_insured" : True
}
}
}
},
有人可以帮我解决这个问题吗?提前致谢
解决方案
我找到了解决我的问题的方法。我是这样做的
results = {}
def create_dict():
newdict = {}
newdict["NEWKEY"] = None # to be filled in later
newdict["ANOTHERKEY"] = None # to be filled in later
innerdict = defaultdict(dict)
innerdict["dep_name"]["is_minor"] = name["is_dep_minor"]
innerdict["dep_name"]["is_insured"] = name["is_insured"]
newdict["DEPENDENTS"] = innerdict
return newdict
for name in names:
if name["name"] in results.keys():
dname = name["dep_name"]
is_minor = name["is_dep_minor"]
is_insured = name["is_dep_insured"]
name = results.get(name["name"])
name["DEPENDENT"][dname]["is_dep_minor"] = is_minor
name["DEPENDENT"][dname]["is_dep_insured"] = is_insured
else:
newdict = create_dict()
results[name["name"]] = newdict
这个东西给出了想要的输出
推荐阅读
- angular - 角,量角器,黄瓜问题
- mysql - 在我的 sql 中加入两个表不返回结果集
- powershell - Powershell:通过将脚本指向功能列表来添加 WindowsFeature
- java - Firebase Auth:来自不同活动的getCurrentUser?
- c++ - 函数未返回所需的字符串
- symbolic-math - 基于加法(+)运算符 MAPLE 创建子表达式
- scala - 无法将 scala 对象转换为 spark 数据帧
- php - 使用 PHP 将图像插入 docx 文件的最简单方法
- actions-on-google - 为谷歌操作的函数中的值创建实体和训练短语
- android - 动态更改 ImageView 大小?