Skip to main content
 首页 » 编程设计

python 嵌套列表和字典,无法访问和设置

2025年05月04日16think

我最初是一个 c 的人,但最近我开始用 python 做一些事情。 给我带来麻烦的是 python 中更高级的数据结构。

我可以像在 c 中那样用多个列表来完成这一切,但那样会很无聊吗?

无论如何,我有一个数据结构,它基本上是一个字典列表,其中字典的值字段是另一个包含 2 个键值对的列表:

clients = [ 
    {'client1':[{'test':'testvalue','status':'statusvalue'}]}, 
    {'client2':[{'test':'testvalue','status':'statusvalue'}]}, 
    {'client3':[{'test':'testvalue','status':'statusvalue'}]} 
] 

现在我希望能够访问 testvalue 和 statusvalue 字段并修改或读取它们。基于列表中的位置。

在伪代码中它会是这样的:

for i in range(0,clients): 
    getvalue(clients[i].'test') 
    setvalue(clients[i].'test') 
 
    getvalue(clients[i].'status') 
    setvalue(clients[i].'status') 

最后我想用这个数据结构用jinja2渲染一个html页面

请您参考如下方法:

首先,在 Python 中,您应该(几乎)永远不要迭代 range(len(something))。您迭代某事。

其次,你的数据结构是错误的。有一个字典列表是没有意义的,每个字典包含一个键/值对,每个值由一个包含单个项目的列表组成。你应该只有一个 dict of dicts:你仍然可以迭代它。

clients = { 
    'client1':{'test':'testvalue','status':'statusvalue'}, 
    'client2':{'test':'testvalue','status':'statusvalue'}, 
    'client3':{'test':'testvalue','status':'statusvalue'}, 
} 
 
for key, value in clients.iteritems(): 
    print value['test'] 
    value['test'] = 'newvalue'