2017-04-25 24 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

相关问题