python嵌套列表和dicts,访问和设置麻烦

Joh*_*ith 1 python dictionary list data-structures

我最初是个人,但最近我开始在python中做一些事情.给我带来麻烦的是python中更先进的数据结构.

我可以用c中的多个列表来完成所有操作,但那会很无聊吗?

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

clients = [
    {'client1':[{'test':'testvalue','status':'statusvalue'}]},
    {'client2':[{'test':'testvalue','status':'statusvalue'}]},
    {'client3':[{'test':'testvalue','status':'statusvalue'}]}
]
Run Code Online (Sandbox Code Playgroud)

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

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

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

    getvalue(clients[i].'status')
    setvalue(clients[i].'status')
Run Code Online (Sandbox Code Playgroud)

最后我想使用这个数据结构来渲染一个带有jinja2的html页面

Dan*_*man 5

首先,在Python中你应该(几乎)永远不会迭代range(len(something)).你迭代了something.

其次,您的数据结构是错误的.没有必要有一个dicts列表,每个dict包含一个键/值对,每个值由一个包含单个项目的列表组成.你应该只有一个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'
Run Code Online (Sandbox Code Playgroud)

  • @prgmjunkie:如果条目的位置是你要用来访问它的东西,而不是`client1`名称,那么最好让''client1'`成为一个值而不是一个键:`clients = [{'name':'client1','test':'testvalue','status':'statusvalue'},{'name':'client2',...` (2认同)