我是python的新手,我在寻找完成任务的好方法时遇到了一些麻烦
鉴于我有一本类似于此的词典
x = {
"rackList": [
{
"rackType": "apc",
"serverList": [
{
"serverType": "x4950",
"serverIp": "192.168.0.1",
}
],
"position": 1
},
{
"rackType": "apc",
"serverList": [
{
"serverType": "x4950",
"serverIp": "192.168.0.2",
}
],
"position": 2
},
{
"rackType": "apc",
"serverList": [
{
"serverType": "x4950",
"serverIp": "192.168.0.3",
}
],
"position": 3
},
{
"rackType": "apc",
"serverList": [
{
"serverType": "x4950",
"serverIp": "192.168.0.4",
}
],
"position": 4
}
]}
我需要从每个serverList中提取服务器IP,所以目前我这样做:
y = []
for i in x['rackList']:
for j in i['serverList']:
y.append(j['serverIp'])
我想知道是否有更多的python或更精细的方法来实现相同的结果。
提前致谢
答案 0 :(得分:4)
是的,它被称为list comprehension:
y = [server['serverIp'] for rack in x['rackList'] for server in rack['serverList']]
# ['192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4']