gpt4 book ai didi

python - 如何通过键列表导航字典?

转载 作者:行者123 更新时间:2023-11-30 22:04:43 25 4
gpt4 key购买 nike

从这样的嵌套字典开始:

my_dict = {"North America" : { "USA" : { "Virginia" : ["Norfolk","Richmond","Charlottesville"], "New York": ["Albany"]}, "Canada" : {"Saskatchewan": ["Saskatoon"], "New Brunswick":["Moncton","Saint John"]}}}

print(my_dict)
North America
USA
Virginia
['Norfolk', 'Richmond', 'Charlottesville']
New York
['Albany']
Canada
Saskatchewan
['Saskatoon']
New Brunswick
['Moncton', 'Saint John']

当我不知道时,如何获取像 [key1, key2] 这样的字符串列表并以编程方式返回嵌套对象 my_dict[key1][key2]会有多少把 key ?示例:

keys = ['North America', 'USA']
print(my_dict.???)
Virginia
['Norfolk', 'Richmond', 'Charlottesville']
New York
['Albany']

keys = ['North America', 'Canada', 'Saskatchewan']
print(my_dict.???)
['Saskatoon']

keys = ['North America', 'Canada']
print(my_dict.???)
Saskatchewan
['Saskatoon']
New Brunswick
['Moncton', 'Saint John']

假设键的“路径”存在,但不要假设任何有关结构深度的信息。

最佳答案

你可以将functools.reduce扔到它上面。

>>> from functools import reduce
>>>
>>> my_dict = {"North America" : { "USA" : { "Virginia" : ["Norfolk","Richmond","Charlottesville"], "New York": ["Albany"]}, "Canada" : {"Saskatchewan": ["Saskatoon"], "New Brunswick":["Moncton","Saint John"]}}}
>>> keys = ['North America', 'Canada']
>>> reduce(dict.get, keys, my_dict)
>>> {'New Brunswick': ['Moncton', 'Saint John'], 'Saskatchewan': ['Saskatoon']}

...或者编写您自己的函数。

def nest_get(dic, keys):
result = dic
for k in keys:
result = result[k]
return result

演示:

>>> nest_get(my_dict, keys)
>>> {'New Brunswick': ['Moncton', 'Saint John'], 'Saskatchewan': ['Saskatoon']}

关于python - 如何通过键列表导航字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53195684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com