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

问题描述 投票:-2回答:3

我有下面的词典列表:

>>> 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的值?
python dictionary
3个回答
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': ...}, ...}

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'}}

希望这可以帮助..


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'}}
© www.soinside.com 2019 - 2024. All rights reserved.