如何解决如何在不创建新键的情况下访问 for 循环内的现有字典键?
names = [{'id':1,'name': 'Alice','dep_name':'Pammy','is_dep_minor':True,'is_insured':False},{'id':2,'dep_name':'Trudyl','is_dep_minor':False,'is_insured':True},{'id':3,'name': 'Bob','dep_name':'Charlie',]
我想创建一个新的统一字典,其中包含稍后将填充的新属性。当 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,"DEPENDENTS" : {
"Trudy" : {
"is_minor" : False,"is_insured" : True
}
}
}
},# and the list goes on
]
我的目标是
{
"Alice" : {
"NEWKEY" : None,"is_insured" : False
},"Trudy" : {
"is_minor" : False,
有人可以帮我解决这个问题吗?提前致谢
解决方法
我找到了解决问题的方法。我就是这样做的
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
这个东西给出了想要的输出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。