拼写错误的字母dict-python



有没有一种简单的方法可以制作一个dict,其中字母是键,随机字母是值?像这样:

{'a':'z','b':'x','c':'c'}

是。有。

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'}

但实际上你可能会得到一个不同的结果(这完全是正常的,完全是意料之中的(。

您还可以编写如下逻辑:

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)}

很难从你的问题中准确地说出你想要什么,但我怀疑你想要的是一个字母到一组打乱的字母的映射。这样,每个字母将对应一个不同的字母;没有两个字母会映射到同一个字母。

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)}

我们从字符串和随机模块中导入小写字母。第三行将字符串ascii_lowercase转换为列表,然后使用random.shuffle方法对其进行混洗。这会打乱列表的位置,因此它没有返回值。最后,我们将这两个列表压缩在一起以获得('a', 's')元组的列表,其中第一个字母取自未混洗的列表,第二个字母取自混洗的名单。然后,字典理解将这些元组作为键值对来构建字典。

您可以使用以下代码

from string import ascii_uppercase
import random
from collections import OrderedDict
OrderedDict((k, random.choice(string.letters)), k in enumerate(ascii_uppercase))

最新更新