私のコードのどこかで発生した問題をどこからでも探していましたが、解決策は見当たりませんでした...それはかなり面倒なことでしたので、私はあなたにこの質問をしています。Python dict issue iteratingのとき
私はキーと値の単純な辞書を使用していますが、問題は最後にそれを印刷したいときです。たとえば、 "C"のように2つの文字が反転している不思議なシャッフルがあります。 、 "B": "B"の代わりに "X": "X"、 "C": "W"ここに私のコードがあります(それはおそらくより明確になります)
PS。私は最初の数行で構造を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'
}
無関係注文を追跡するためにあなたの
dict
のために必要がある場合は、collections.OrderedDict
すなわちを使用することを検討してくださいあなたのコードの構造には、変数の小文字のL( "l")は使用しないでください。特に1のすぐ隣にあります。 –
ディクテーションはどのオーダーも追跡しません。情報。 – user2357112
辞書は順序付けられていません。 [this](http://stackoverflow.com/questions/15479928/why-is-the-order-in-python-dictionaries-and-sets-任意) – idjaw