我有以下字典列表:
>>> 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'}}
如何从
primary info
中删除age
键值对?如何在
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'}}