python字典嵌套列表怎么访问值的某个元素_在嵌套的python字典中设置一个值,给出索引和值的列表...

1586010002-jmsa.png

Sorry if this question has been answered before - I've been searching for solutions but I maybe am not using the correct search terms.

Anyway, what I'm trying to do is to programmatically set a value in a dictionary, potentially nested, given a list of indices and a value.

So for example, let's say my list of indices is:

['person', 'address', 'city']

and the value is

'New York'

I want as a result a dictionary object like:

{ 'Person': { 'address': { 'city': 'New York' } }

Basically, the list represents a 'path' into a nested dictionary.

I think I can construct the dictionary itself, but where I'm stumbling is how to set the value. Obviously if I was just writing code for this manually it would be:

dict['Person']['address']['city'] = 'New York'

But how do I index into the dictionary and set the value like that programmatically if I just have a list of the indices and the value?

Hope this makes sense and isn't too dumb a question... :) Thanks for any help.

解决方案

Something like this could help:

def nested_set(dic, keys, value):

for key in keys[:-1]:

dic = dic.setdefault(key, {})

dic[keys[-1]] = value

And you can use it like this:

>>> d = {}

>>> nested_set(d, ['person', 'address', 'city'], 'New York')

>>> d

{'person': {'address': {'city': 'New York'}}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值