【发布时间】:2017-01-01 16:31:32
【问题描述】:
给定的功能需要一些改进:
def flatten(d, parent_key=''):
items = []
for k, v in d.items():
try:
items.extend(flatten(v, '%s%s.' % (parent_key, k)).items())
except AttributeError:
items.append(('%s%s' % (parent_key, k), v))
return dict(items)
我想修改上层函数。
它还使列表变平:
{'d': [1, 2, 3]}
这样的:
{'d[0]': 1, 'd[1]': 3, 'd[2]': 3}
编辑: 这段代码为我做了,但它不像第一个那么圆滑,有什么改进的想法吗?
def flatten_dict(d):
def items():
for key, value in d.items():
if isinstance(value, dict):
for subkey, subvalue in flatten_dict(value).items():
yield key + "." + subkey, subvalue
elif isinstance(value, list):
for index, val in enumerate(value):
yield key + "[" + str(index) + "]" , value[index]
else:
yield key, value
return dict(items())
【问题讨论】:
标签: python list dictionary flatten