我有以下格式的字典存储在list.Below列出列表switch_ports
的12个成员(字典)
[
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:011', 'desc': 's1-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:012', 'desc': 's1-eth2'},
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:021', 'desc': 's2-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:022', 'desc': 's2-eth2'},
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:031', 'desc': 's3-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:032', 'desc': 's3-eth2'},
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:041', 'desc': 's4-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:042', 'desc': 's4-eth2'},
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:051', 'desc': 's5-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:052', 'desc': 's5-eth2'},
{'type': 'port', 'number': 1, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:061', 'desc': 's6-eth1'},
{'type': 'port', 'number': 2, 'port_state': 1, 'state': 'active', 'port_id': '00:00:00:00:00:00:02:062', 'desc': 's6-eth2'}]
从列表switch_ports
我想访问上面的port_id
。我该怎么做?
如果我这样做
for port in switch_ports:
print(port)
我得到与上面相同的输出。但是,如果我尝试访问下面的各个键值对。
for port in switch_ports:
print(port[port_id])
如何从列表port_id
00:00:00:00:00:00:02:062
(例如switch_ports
)
答案 0 :(得分:1)
你快到了。只需使用port_id
作为字符串,就像这样
for port in switch_ports:
print(port["port_id"])
如果你想收集所有port_id
作为一个列表,那么使用像这样的列表理解
port_ids = [port["port_id"] for port in switch_ports]
答案 1 :(得分:1)
另一种方法是,使用itemgetter
模块中的operator
:
>>> import operator
>>> operator.itemgetter('port_id')
<operator.itemgetter object at 0x7f318d7b8b90>
>>> port_id = operator.itemgetter('port_id')
>>> for port in switch_ports:
... print port_id(port)
...
打印:
00:00:00:00:00:00:02:011
00:00:00:00:00:00:02:012
00:00:00:00:00:00:02:021
00:00:00:00:00:00:02:022
00:00:00:00:00:00:02:031
00:00:00:00:00:00:02:032
00:00:00:00:00:00:02:041
00:00:00:00:00:00:02:042
00:00:00:00:00:00:02:051
00:00:00:00:00:00:02:052
00:00:00:00:00:00:02:061
00:00:00:00:00:00:02:062