我有一个键值对,说:
key = "a-b-c-d"
value = 10
使用下面的命令,我可以将键转换为列表。
my_list=key.split("-")
所以my_list就像
my_list=['a', 'b', 'c', 'd']
,我想把它转换成一个映射,最终输出在变量"my_dict">
my_dict = {'a':{'b':{'c':{'d':10}}}}
所以当我打印这个
print(my_dict['a']['b']['c']['d'])
10
您可以将基字典设置为具有该值的最后一个键,然后反向迭代键,将字典作为新键的值:
key = "a-b-c-d"
value = 10
keys = key.split('-')
d = value
for k in reversed(keys):
d = { k : d }
print(d)
# {'a': {'b': {'c': {'d': 10}}}}
print(d['a']['b']['c']['d'])
# 10
可能不是理想的方式,但我会这样处理:
key = 'a-b-c-d'
value = 10
*parts, last_part = key.split('-')
my_dict = temp = {}
for part in parts:
temp[part] = temp = {}
# assign last part, {d: 10}
temp[last_part] = value
print(my_dict)
结果:
{'a': {'b': {'c': {'d': 10}}}}
通过反向遍历键列表来构建字典。在第一次迭代中,当字典为空时,分配最里面的键值对。然后使用copy
.
my_list=['a', 'b', 'c', 'd']
value = 10
my_dict = {}
for k in my_list[::-1]:
if not my_dict:
my_dict[k] = value
else:
my_dict = {k: my_dict.copy()}
print(my_dict)
# {'a': {'b': {'c': {'d': 10}}}}