在python的list中添加sub-dictional元素

2024-06-16 13:08:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在列表中添加子字典元素。这是给我的类型错误。 这是字典和我的代码:

{
    "key1": "value1",
    "key2": {
        "skey1": "svalue2",
        "skey2": {
            "sskey1": [{
                "url": "value",
                "sid": "511"
            },
                {
                    "url": "value",
                    "sid": "522"
                },
                {
                    "url": "value",
                    "sid": "533"
                }]
        }
    }
}

我想将sid添加到列表中,如[511,522,533]

这是我的密码:

rsId=[]
for i in op['key2']['skey2']['sskey1']:
    for k,v in i.items():
        if k=='sid':
            rsId.append(v)  

Tags: 代码inurl元素类型列表for字典
3条回答
D = { 
    "key1":"value1",
    "key2":{ 
             "skey1":"svalue2",
             "skey2":{
                        "sskey1":[{ 
                                    "url":"value",
                                    "sid":"511"
                                  },
                                  { 
                                    "url":"value",
                                    "sid":"522"
                                  },
                                  { 
                                    "url":"value",
                                    "sid":"533"
                                  } ]
      }
  }   
}

res = []
for i in D['key2']['skey2']['sskey1']:
    res.append(i['sid'])
print res

结果:

['511', '522', '533']

或单行代码:

res = [i['sid'] for i in D['key2']['skey2']['sskey1']]

你可以试着用这样一行字:

print(list(map(lambda x:x['sid'],data['key2']['skey2']['sskey1'])))

输出:

['511', '522', '533']

如果您想要int值,那么:

print(list(map(lambda x:int(x['sid']),data['key2']['skey2']['sskey1'])))

输出:

[511, 522, 533]

当数据为:

data = {
    "key1":"value1",
    "key2":{
             "skey1":"svalue2",
             "skey2":{
                        "sskey1":[{
                                    "url":"value",
                                    "sid":"511"
                                  },
                                  {
                                    "url":"value",
                                    "sid":"522"
                                  },
                                  {
                                    "url":"value",
                                    "sid":"533"
                                  } ]
      }
  }
}

你可以使用听写理解:

rsId = [v for item in op['key2']['skey2']['sskey1'] for k, v in item.items() if k == 'sid']

相关问题 更多 >