2017-04-25 373 views
1

這是我的代碼:如何在Python中創建一個隨機字母作爲沒有重複鍵的字典?

我創建了一些隨機字母,並將它們存儲在變量中,然後我將這些變量用作字典中的鍵。問題是由於隨機字母,密鑰是重複的。我該如何解決這個問題?

a = random.choice(string.ascii_letters).lower() 
b = random.choice(string.ascii_letters).lower() 
      . 
      . 
      . 
z = random.choice(string.ascii_letters).lower() 

alphabet = 
{'a':a,'b':b,'c':c,'d':d,'e':e,'f':f,'g':g,'h':h, 
'i':i,'j':j,'k':k,'l':l,'m':m,'n':n, 
'o':o,'p':p,'q':q,'r':r,'s':s,'t':t, 
'u':u,'v':v,'w':w,'x':x,'y':y,'z':z} 
+1

只是一個快速的音符上的術語。您不會將這些隨機字母存儲爲_keys_,您將它們存儲爲_values_。在'{'a':'xyz','b'中:'uvw'}','a'是一個鍵,'xyz'是與該鍵相關的值。 –

+0

順便說一句,創建一大堆單獨但相關的命名變量(比如'a'到'z')並不是一個好主意。當你發現自己想要這樣做時,看看你是否可以將它們放入一個集合(如列表或字典)中。 –

回答

5

請勿使用單獨的choice()調用。使用random.sample(),從string.ascii_lowercase採摘,而不是lowercasing:

# pick 10 random keys, all unique 
keys = random.sample(string.ascii_lowercase, 10) 

如果你正在做的是洗牌所有26個字母,然後使用random.shuffle()

# list of 26 letters in random order 
random_letters = list(string.ascii_lowercase) 
random.shuffle(random_letters) 
# map the alphabet to the random letters 
alphabet = dict(zip(string.ascii_lowercase, random_letters)) 
+0

非常感謝您的快速和優秀的迴應。 – Mpesiths

相關問題