首页 > 解决方案 > 创建和排序嵌套字典

问题描述

我有两个数组:-

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

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

请帮忙。

标签: pythonsortingdictionarynested

解决方案


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)

官方文档在这里


推荐阅读