【发布时间】:2016-10-29 20:23:16
【问题描述】:
我一直在到处寻找我的一个代码中出现的问题,但没有找到任何解决方案......这很烦人,这就是我问你这个问题的原因。
我正在使用带有键和值的简单字典,但问题是当我想在最后打印它时,它有一个奇怪的随机播放,其中两个字母是倒置的,例如“C”:“W”, “B”:“X”而不是“B”:“X”,“C”:“W”。这是我的代码(可能会更清楚)
PS。我在最后几行中首先尝试将 while 结构替换为 for 结构,但没有任何改进。
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'
}
【问题讨论】:
-
与您的代码结构无关,但请不要将小写 L ("l") 用于变量 - 特别是在 1 旁边
-
字典不跟踪任何订购信息。
-
字典是无序的。阅读this
-
您可以使用
string库获取所有字母。例如,m1 = [string.ascii_uppercase] -
我只是不明白为什么它似乎是按某种字母顺序排列的,但不是确切的。谢谢你这么快的回答。
标签: python python-3.x dictionary key iteration