【问题标题】:Appending and reading list values in nested dictionaries在嵌套字典中追加和读取列表值
【发布时间】:2020-09-18 14:54:28
【问题描述】:

需要检查我是否理解这一点。 我正在运行一个将列表附加到嵌套字典中的列表的函数。我以为我可以分配一个变量来追加并返回与嵌套字典相同的值,但它返回“None”,(有趣的是,即使嵌套字典位于返回 None 的追加函数中,它仍然会追加嵌套字典?)。 .. 那么使用多个/嵌套.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]]

【问题讨论】:

标签: python list dictionary nested


【解决方案1】:

如果您知道scores['class1']['nest1']['nest2'] 存在,那与.get()s 的链没有区别。

您认为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'])

【讨论】:

    【解决方案2】:

    list append 方法不返回任何内容(或者说返回 None),这就是为什么 main 函数中的循环不断将 None 附加到 test_var。 append 函数不返回任何内容并不意味着它没有执行任何操作。它肯定会在字典分数的列表中添加一个新的列表项。

    另外,你可以简单地使用

    scores["class1"]['nest1']['nest2']
    

    而不是get方法来访问嵌套字典中的列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2017-06-17
      相关资源
      最近更新 更多