从Python中的字典列表中删除钥匙值对



我有以下字典列表:

>>> 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. 如何从primary info中删除age键值对?

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

要删除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': ...}, ...}

要从dict删除键或值,您可以使用del。有关del的更多信息,请转到此链接

您可以这样解决您的问题。

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

希望这会有所帮助..

您可以使用字典理解:

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

最新更新