是否有一种简单的方法可以使字典成为字母,而字母是键,而随机字母是值呢?像这样:
{'a':'z','b':'x','c':'c'}
答案 0 :(得分:1)
是的。有。
import string,random
a_dict = {letter:random.choice(string.ascii_lowercase) for letter in string.ascii_lowercase}
print (a_dict)
我明白了
{'o': 'c', 'w': 'i', 'b': 'w', 'd': 'j', 'c': 'g', 'z': 'b',
't': 'c', 'y': 'q', 'n': 'f', 'j': 'p', 'e': 'x', 'q': 'y',
'f': 'j', 'v': 'a', 'h': 'm', 'u': 'y', 'p': 't', 'l': 'f',
'i': 'e', 'm': 'o', 'g': 'b', 's': 'n', 'a': 'h', 'r': 'n',
'k': 'o', 'x': 'a'}
但是您实际上可能会得到不同的结果(这完全正常并且完全可以预期)。
答案 1 :(得分:0)
您可以使用以下代码
from string import ascii_uppercase
import random
from collections import OrderedDict
OrderedDict((k, random.choice(string.letters)), k in enumerate(ascii_uppercase))
答案 2 :(得分:0)
很难准确地说出您想从问题中得到什么,但是我怀疑您想要的是将字母映射为一组乱序的字母。这样,每个字母将对应一个不同的字母。没有两个字母会映射到同一字母。
from string import ascii_lowercase
import random
letters = [x for x in ascii_lowercase]
random.shuffle(letters)
letter_mapping = {k: v for k, v in zip(ascii_lowercase, letters)}
我们从字符串和random模块中导入小写字母。第三行将字符串ascii_lowercase
转换为列表,然后我们使用random.shuffle
方法将其洗牌。这样就可以对列表进行随机排序,因此没有返回值。
最后,我们将两个列表压缩在一起以获得('a', 's')
元组的列表,其中第一个字母来自未混排的列表,第二个字母来自混排的列表。然后,字典理解器将这些元组作为键值对构建字典。
答案 3 :(得分:0)
您还可以编写如下逻辑:
import string # to access lower case characters
import random # to access the method `choice()`
letters = string.ascii_lowercase # get the lower cases ascii letters
keys = [i for i in letters] # create a list of lower case letter
# generate a list of random letters.
values = [random.choice(letters) for i in range(len(letters))]
# The actual dictionary
mydict = {key: value for key, value in zip(keys, values)}