我试图从嵌套字典中获取用户输入定义的键的值。 虽然我可以从函数本身中打印出值。 Return语句将值发送为None。
people = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'},
3: 'James',
4: 'lance',
'change1': {5: 'place'},
'country': {'Waterloo': 'Waterloo', 'Australia': 'Australia'},
6: {'Position': 'GM'}
}
def getfromdict(mydict, mykey):
for i in mydict.keys():
if type(mydict[i])==dict:
newdict = mydict[i]
getfromdict(newdict, mykey)
elif i == mykey:
print(mydict[i])
valuefound = mydict[i]
return valuefound
else:
continue
result = getfromdict(people,5)
print(result)
答案 0 :(得分:2)
您的代码段的第三行应阅读
return getfromdict(newdict, mykey)
要在树上找到一片叶子,就等距而言,
def leaf(tree, key):
if key in tree: return tree[key]
for subtree in filter(lambda s: isinstance(s, dict), tree.values()):
ret_val = leaf(subtree, key)
if ret_val is not None: return ret_val
此实现具有以下属性:如果在某个级别找到了密钥,则返回的键将返回叶或子树(不希望出现的情况是非常简单的)。
答案 1 :(得分:0)
您可以尝试在嵌套JSON中搜索键
def getfromdict(mydict, mykey):
if type(mydict) == type({}):
for k1 in mydict:
if k1 == mykey:
return mydict[k1]
fromdict = getfromdict(mydict[k1], mykey)
if fromdict is not None:
return fromdict