炒字母字典python

时间:2018-12-06 11:17:40

标签: python python-3.x dictionary random

是否有一种简单的方法可以使字典成为字母,而字母是键,而随机字母是值呢?像这样:

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

4 个答案:

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