【问题标题】:Creating and Sorting a nested dictionary创建和排序嵌套字典
【发布时间】:2019-12-02 07:03:59
【问题描述】:

我有两个数组:-

A=[a,d,b,c]
B=[e,g,f,h,k,l,m]

我想通过组合两个数组来创建一个嵌套字典。我想在每个密钥对的嵌套字典中插入 hello 。预期结果:

d=dict()
d={'a':{'e':'Hello','g':'Hello','f':'Hello','f':'Hello','h':'Hello','k':'Hello','l':'Hello','m':'Hello'},
    'b':{'e':'Hello','g':'Hello','f':'Hello','f':'Hello','h':'Hello','k':'Hello','l':'Hello','m':'Hello'},
c:{'e':'Hello','g':'Hello','f':'Hello','f':'Hello','h':'Hello','k':'Hello','l':'Hello','m':'Hello'} --------- }

我的代码:

for f in range(0,len(A)):
    d[f] = {}
    for i in range (0,len(B):
        if A[f] not in d:
            d[f]={}
        d[A[f]].update([B[i]]:'Hello')

print d

但我得到的是扭曲的字典。正如我上面解释的那样,我期待结果,但我得到的结果是字典,顺序不正确,排序混乱。

请帮忙。

【问题讨论】:

  • 欢迎您,您应该阅读更多关于 python 的字典。它们不是排序的数据结构。查找排序字典
  • 字典在 Python 3.7 之前不会保留插入顺序。在 2.7+ 版本中,您可以改用 collections.OrderedDict 类。

标签: python sorting dictionary nested


【解决方案1】:

OrderDict 存在于 python 中,但它确实记住了键插入的顺序:

from collections import OrderedDict

d = {}
d['a'] = 1
d['b'] = 2
d['c'] = 3

for k,v in d.items():
  print(k,v)

#('a',1)
#('c',3)
#('b',2)

ord = {}
ord = {}
ord['a'] = 1
ord['b'] = 2
ord['c'] = 3

for k,v in ord.items():
  print(k,v)

#('a',1)
#('b',2)
#('c',3)

官方文档here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2021-07-27
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多