gpt4 book ai didi

python - 从列表对象为字典创建键

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:42 25 4
gpt4 key购买 nike

我有 list :

k = ["key1", "subkey2", "subsubkey3"]

我确定 d 是一个字典,因此 d["key1"]["subkey2"]["subsubkey3"] 是有效的。

如何将列表 k 转换为字典 d 的键,以便返回 d[k[0]][k[1]]。 ..

最佳答案

您可以尝试使用 reduce()operator.getitem :

>>> from operator import getitem
>>>
>>> d = {'key1': {'subkey2': {'subsubkey3': 'value'}}}
>>> k = ["key1", "subkey2", "subsubkey3"]
>>>
>>> reduce(getitem, k, d)
'value'

在 Python 3.x 中,你应该使用 functools.reduce() .


reduce() 只是接受一个 2 参数函数并将其连续应用于列表的元素,累积结果。还有一个可选的 initializer 参数,我们在这里使用了它。正如文档所述,reduce() 大致等同于:

def reduce(function, iterable, initializer=None):
it = iter(iterable)
if initializer is None:
try:
initializer = next(it)
except StopIteration:
raise TypeError('reduce() of empty sequence with no initial value')
accum_value = initializer
for x in it:
accum_value = function(accum_value, x)
return accum_value

在我们的例子中,我们传递了一个initializer,所以它不会是None。因此我们拥有的是:

def reduce(function, iterable, initializer=None):
it = iter(iterable)
accum_value = initializer
for x in it:
accum_value = function(accum_value, x)
return accum_value

在这种情况下,我们的函数getitem(a, b)(见上面的链接),它只返回a[b]。此外,我们的 iterablek 而我们的 initializerd。所以上面的 reduce() 调用等同于:

accum_value = d
for x in k:
accum_value = accum_value[x]

关于python - 从列表对象为字典创建键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620925/

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