gpt4 book ai didi

python - 如何通过在Python中的分隔符上拆分键来从字典创建嵌套字典?

转载 作者:行者123 更新时间:2023-12-01 05:06:36 27 4
gpt4 key购买 nike

我有一个如下的字典:

a = { 
'customer_name': 'bob',
'customer_phone': '555-1212',
'order_0_number': 'A33432-24',
'order_0_date': '12/12/12',
'order_1_number': 'asd24222',
'order_1_date': '12/14/12'
}

我需要它在下划线上拆分并放入像这样的嵌套字典中:

b = {
'customer': {
'name': 'bob',
'phone': '555-1212'
},
'order': {
'0': {
'date': '12/12/12',
'number': '...' },
'1': { ... etc.

我拥有的实际数据比这嵌套得更深。我对此已经很感兴趣了,但一直不知道如何在 Python 中做到这一点:

def expand_data(field, value):

split_field = field.split('_', 1)

#base case, end of string
if len(split_field) == 1:
child_element[split_field[0] = value
return child_element
else:
child_element[split_field[0]] = expand_data(split_field[1],value)
return child_element

b = {}
for k,v in a.iteritems():
b += expand_data(k, v) # stuck here because I can't add nested dicts together

但我并不完全确定这是否是正确的方法。我还没有运行这段代码,只是现在想考虑一下。

此外,字典键将来可能会发生变化,所以我只能依靠“_”下划线来分割。我也不知道它需要嵌套多深。

最佳答案

通用解决方案:

def nest_dict(flat_dict, sep='_'):
"""Return nested dict by splitting the keys on a delimiter.

>>> from pprint import pprint
>>> pprint(nest_dict({'title': 'foo', 'author_name': 'stretch',
... 'author_zipcode': '06901'}))
{'author': {'name': 'stretch', 'zipcode': '06901'}, 'title': 'foo'}
"""
tree = {}
for key, val in flat_dict.items():
t = tree
prev = None
for part in key.split(sep):
if prev is not None:
t = t.setdefault(prev, {})
prev = part
else:
t.setdefault(prev, val)
return tree


if __name__ == '__main__':
import doctest
doctest.testmod()

关于python - 如何通过在Python中的分隔符上拆分键来从字典创建嵌套字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24888371/

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