迭代时Python dict问题
我一直在到处搜索我的一个代码中出现的问题,但没有找到任何解决方案。。。这很烦人,这就是我问你这个问题的原因 我使用的是一个带有键和值的简单词汇表,但问题是当我想打印它的结尾时,它有一个奇怪的无序排列,其中两个字母是颠倒的,例如“C”:“W”,“B”:“X”而不是“B”:“X”,“C”:“W”。这是我的代码(可能会更清楚) 另外,我在最后几行中首次尝试用for结构替换while结构,但没有任何改进迭代时Python dict问题,python,python-3.x,dictionary,key,iteration,Python,Python 3.x,Dictionary,Key,Iteration,我一直在到处搜索我的一个代码中出现的问题,但没有找到任何解决方案。。。这很烦人,这就是我问你这个问题的原因 我使用的是一个带有键和值的简单词汇表,但问题是当我想打印它的结尾时,它有一个奇怪的无序排列,其中两个字母是颠倒的,例如“C”:“W”,“B”:“X”而不是“B”:“X”,“C”:“W”。这是我的代码(可能会更清楚) 另外,我在最后几行中首次尝试用for结构替换while结构,但没有任何改进 import random m1 = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]
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)
如评论中所述,
dict
s没有订单。如果您需要<代码> DICT<代码>跟踪订单,请考虑使用<代码>集合。
即:
如评论中所述,
dict
s没有订单。如果您需要<代码> DICT<代码>跟踪订单,请考虑使用<代码>集合。
即:
您可以使用两个字符串文字和zip来执行此操作:
m1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
l1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = {}
for m,l in zip(m1,l1):
key.update({m:l})
print(key)
~您可以使用两个字符串文字和zip来完成:
m1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
l1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = {}
for m,l in zip(m1,l1):
key.update({m:l})
print(key)
~与代码的结构无关,但请不要使用小写L(“L”)作为变量-尤其是在1的旁边。字典不跟踪任何排序信息。字典是无序的。阅读您可以使用
字符串
库获取所有字母。例如,m1=[string.ascii_uppercase]
我就是不明白为什么它看起来是按某种字母顺序排列的,但不是完全的顺序。谢谢你这么快的回答。与你的代码结构无关,但请不要用小写L(“L”)作为变量-尤其是在1旁边。图片不跟踪任何排序信息。字典是无序的。阅读您可以使用字符串
库获取所有字母。例如,m1=[string.ascii_uppercase]
我就是不明白为什么它看起来是按某种字母顺序排列的,但不是完全的顺序。谢谢你这么快的回答。非常感谢你的评论,这正是我需要的!非常感谢你的评论,这正是我所需要的!
m1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
l1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = {}
for m,l in zip(m1,l1):
key.update({m:l})
print(key)