在嵌套字典中追加和读取列表值

时间:2020-09-18 14:54:28

标签: python list dictionary nested

需要检查一下我了解这项权利。 我正在运行一个将列表追加到嵌套字典中的列表的函数。我以为我可以分配一个变量来追加并返回与嵌套字典相同的值,但是它返回'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]]

2 个答案:

答案 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方法来访问嵌套字典中的列表