首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理嵌套字典的最佳实践?

处理嵌套字典的最佳实践?
EN

Stack Overflow用户
提问于 2020-07-01 07:19:09
回答 1查看 52关注 0票数 0

我正在将数据从CSV加载到数据库模型。我使用中间层进行数据验证。下面是一个基本的例子:

代码语言:javascript
运行
复制
{'Team': 
  {'Account': 
    {'InvoiceID' : invID,
     'Amount': aLotOfMoney}
}}

for team in teams.:
     for account in teams[team]:
         for invoice in teams[team][account]:
             acc = Account(ID = teams[team][account][invoiceID],
                           amount=teams[team][account][amount])
             acc.save()

这一切都很好,但它远不是优雅的,而且似乎相当低效。有没有办法返回嵌套的Dict而不是key

EN

回答 1

Stack Overflow用户

发布于 2020-07-01 07:34:59

你是想把字典压平吗?也就是说,你会得到一个字典,每个键都是它在每个字典中的键的组合。

您可以使用像flatten-dict这样的预制函数,也可以自己编写一些代码。

此示例嵌套字典:

代码语言:javascript
运行
复制
{'ints': {'1': 1, '2': 2, '3': 3}, 'letters': {'a': 'A', 'b': 'B'}}

将被展平为:

代码语言:javascript
运行
复制
{'ints.1': 1, 'ints.2': 2, 'ints.3': 3, 'letters.a': 'A', 'letters.b': 'B'}

自制:

代码语言:javascript
运行
复制
def flatten_dict(data, keystring=''):
    if type(data) is dict:
        keystring = keystring + '.' if keystring else keystring
        for k in data:
            yield from flatten_dict(data[k], keystring + k)
    else:
        yield keystring, data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62667487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档