从python中的字典列表中删除键值对

时间:2017-12-16 15:40:32

标签: python dictionary

我有下面的词典列表:

>>> d={}
>>> d['primary info']={"name":"Mark","age":22,"Id":1234}
>>> d['secondary info']={"location":"Pune"}

现在字典d的列表如下:

{'secondary info': {'location': 'Pune'}, 'primary info': {'age': 22, 'Id': 1234, 'name': 'Mark'}}
  1. 如何从age删除primary info键值对?

  2. 如何在Id中更新primary info的值?

3 个答案:

答案 0 :(得分:1)

要删除key, value对,您可以使用del

>>> d = {"bob": "fish", "cat": "dog"}
>>> del d["cat"]
>>> d
{'bob': 'fish'}

至于第二部分,您需要获取密钥"primary info"的值(另一个dictionary) and then access the" Id"`的值,并更新它:

d["primary info"]["Id"] = 4321

我可以确认,更新值:

{..., 'primary info': {'Id': 4321, 'name': ...}, ...}

答案 1 :(得分:0)

要从dict删除密钥或值,您可以使用del。有关del的详细信息,请转到此link

你可以像这样解决你的问题..

d={}
d['primary info']={"name":"Mark","age":22,"Id":1234}
d['secondary info']={"location":"Pune"}

del d['primary info']['age'] # deleting

d['primary info']['Id'] = 177 # updating

print(d)

# Output

{'primary info': {'Id': 177, 'name': 'Mark'}, 'secondary info': {'location': 'Pune'}}

希望这会有所帮助..

答案 2 :(得分:0)

您可以使用词典理解:

d = {'secondary info': {'location': 'Pune'}, 'primary info': {'age': 22, 'Id': 1234, 'name': 'Mark'}}
new_id = 2344
new_d = {a:{c:new_id if c == "Id" else d for c, d in b.items() if c != 'age'} for a, b in d.items()}

输出:

{'primary info': {'Id': 2344, 'name': 'Mark'}, 'secondary info': {'location': 'Pune'}}

或者,您可以使用递归来获得更强大的解决方案:

def update(d, new_id, delemeter='age'):
    if all(not isinstance(b, dict) for a, b in d.items()):
       return {a:new_id if a == "Id" else b for a, b in d.items() if a != delemeter}
    final_data = {a:update(b, new_id, delemeter=delemeter) for a, b in d.items()}
    return final_data

输出:

{'primary info': {'Id': 2344, 'name': 'Mark'}, 'secondary info': {'location': 'Pune'}}
相关问题