迭代时Python的dict问题

时间:2016-06-27 18:05:54

标签: python python-3.x dictionary key iteration

我一直在寻找我的一个代码中出现的问题,但没有看到任何解决方案......这一直很烦人,这就是为什么我问你这个问题。

我正在使用带有键和值的简单字典,但问题是当我想要打印它时,它有一个奇怪的混乱,其中两个字母被反转,例如“C”:“W”, “B”:“X”而不是“B”:“X”,“C”:“W”。这是我的代码(可能会更清楚)

PS。我在最后几行尝试用for结构替换while结构,没有任何改进。

import random

m1 = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]

l1 = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]

class Separate:
#Used to separate objects in a list
    def __init__(self, d):
            self.d = d

            self.d = "".join(self.d)
            l = []
            for elt in range(0, len(self.d)):
                    l.append(self.d[elt])
            self.d = l

l1 = Separate(l1)
l1 = l1.d
m1 = Separate(m1)
m1 = m1.d

random.shuffle(m1)

key = {}

count = 0
while count < len(l1):
    key[l1[count]] = m1[count]
    count+=1

print(key)

返回(例如):

{
  'A': 'G', 
  'C': 'A', 
  'B': 'Z', 
  'E': 'U', 
  'D': 'I', 
  'G': 'W', 
  'F': 'X', 
  'I': 'C', 
  'H': 'K', 
  'K': 'T', 
  'J': 'E', 
  'M': 'F', 
  'L': 'B', 
  'O': 'V', 
  'N': 'D', 
  'Q': 'M', 
  'P': 'L', 
  'S': 'S', 
  'R': 'J', 
  'U': 'Q', 
  'T': 'Y', 
  'W': 'H', 
  'V': 'R', 
  'Y': 'P', 
  'X': 'N', 
  'Z': 'O'
}

2 个答案:

答案 0 :(得分:1)

正如评论中所述,dict没有订单。如果您需要dict跟踪订单,请考虑使用collections.OrderedDict

即:

import collections
key = collections.OrderedDict()

答案 1 :(得分:1)

您可以使用两个字符串文字和zip:

来完成
m1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

l1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

key = {}

for m,l in zip(m1,l1):
    key.update({m:l})

print(key)