需要检查一下我了解这项权利。
我正在运行一个将列表追加到嵌套字典中的列表的函数。我以为我可以分配一个变量来追加并返回与嵌套字典相同的值,但是它返回'None',(有趣的是,即使它在返回None的append函数中,仍会追加嵌套字典。) ..那么使用以下多个/嵌套.get()
函数返回嵌套值的最佳方法是吗?
scores = {"class1": {'nest1':{'nest2':[]}}}
get_nested_list = []
test_var = []
def main():
for i in range(0,3):
test_var.append(scores["class1"]['nest1']['nest2'].append([i,i+1,i+2]))
main()
get_nested_list = scores.get("class1").get('nest1').get('nest2')
print(test_var)
print(get_nested_list)
输出...
[None, None, None]
[[0,1,2],[1,2,3],[2,3,4]]
答案 0 :(得分:2)
如果您知道scores['class1']['nest1']['nest2']
存在,那么这与.get()
链之间没有区别。
您认为append
的返回值为None
是正确的。如果要在scores['class1']['nest1']['nest2']
下附加新更新的列表,最好将迭代分为两行:
for i in range(0, 3):
scores['class1']['nest1']['nest2'].append([i, i+1, i+2])
test_var.append(scores['class1']['nest1']['nest2'])
答案 1 :(得分:0)
列表的append方法不返回任何内容(或返回None表示),这就是为什么您在main函数内的循环始终将None附加到test_var的原因。 append函数不返回任何内容,并不表示它没有执行任何操作。当然,它会在字典分数中为列表添加一个新的列表项。
此外,您可以简单地使用
scores["class1"]['nest1']['nest2']
代替get方法来访问嵌套字典中的列表