Python嵌套字典遍历

时间:2017-03-28 21:04:47

标签: python list dictionary

我是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或更精细的方法来实现相同的结果。

提前致谢

1 个答案:

答案 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']