Вова Asked:2022-08-02 18:00:08 +0800 CST2022-08-02 18:00:08 +0800 CST 2022-08-02 18:00:08 +0800 CST 如何创建嵌套字典? 772 从这里 ['2018-01-01', 'yandex', 'cpc', 100] 必须得到这个 {'2018-01-01': {'yandex': {'cpc': 100}}} 而且这个名单可以无限扩大。Pliz 告诉我至少要读什么? python словари 3 个回答 Voted Best Answer CrazyElf 2022-08-02T18:19:53+08:002022-08-02T18:19:53+08:00 在我看来,通过递归和解包,一个稍微优雅的解决方案: def to_dict(list_: list): first, *rest = list_ return {first: to_dict(rest)} if rest else first lst = ['2018-01-01', 'yandex', 'cpc', 100] print(to_dict(lst)) 另外,一个漂亮的没有递归的@insolor 版本,以同样的方式进行了拆包: def to_dict(list_: list): result, *rest = reversed(list_) for i in rest: result = {i: result} return result Chorkov 2022-08-02T18:10:07+08:002022-08-02T18:10:07+08:00 阅读:(1)递归。(2)切片。 def to_dict(l): if len(l) == 2 : return { l[0] : l[1] } else: return { l[0] : to_dict( l[1:] ) } insolor 2022-08-02T18:34:06+08:002022-08-02T18:34:06+08:00 没有递归 - 只需从列表末尾迭代,将每个先前的部分结果包装到一个新字典中: def to_dict(s: list): result = s[-1] for i in reversed(range(len(s) - 1)): result = {s[i]: result} return result print(to_dict(['2018-01-01', 'yandex', 'cpc', 100]))
在我看来,通过递归和解包,一个稍微优雅的解决方案:
另外,一个漂亮的没有递归的@insolor 版本,以同样的方式进行了拆包:
阅读:(1)递归。(2)切片。
没有递归 - 只需从列表末尾迭代,将每个先前的部分结果包装到一个新字典中: