用词典编词典

2024-06-28 20:49:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个函数,它导入ascii\u小写并返回一个字典,其中键的字母作为键,键的随机乱序版本作为值。你知道吗

例如

keys = "abcdefg..." 

然后你把它洗牌,以gydwsk...为例,字典应该是这样的

{'a':'g', 'b':'y', 'c':'d'...}

我不知道从哪里开始,任何帮助都很感激。你知道吗


Tags: 函数版本字典字母asciikeys小写abcdefg
3条回答

你需要用random.shuffle洗牌。举个例子:

import random

keys = 'abcdefghijklmnopqrdtuvxz'
shuffle_keys = list_keys = list(keys)

random.shuffle(shuffle_keys)

my_dict = dict(zip(keys, shuffle_keys))

print(my_dict)

编辑

对于更简单的dict构造的好建议(来自评论。(谢谢)

import random

def f(keys):
    shuffled = list(keys)
    random.shuffle(shuffled)
    return dict(zip(keys, shuffled))

一行。您可以使用^{}来避免^{}的就地重新排序特性。然后使用^{}组合无序化和非无序化的值,这可以直接传递给dict构造函数来生成新的dict

在本例中,使用alc作为ascii_lowercase的缩写是为了简洁起见,对于大多数生产代码来说,这种缩写可能有点过于粗暴。你知道吗

>>> from string import ascii_lowercase as alc
>>> from random import sample
>>> dict(zip(alc, sample(alc, len(alc))))
{'b': 'a', 's': 'w', 'v': 'g', 'g': 'n', 'k': 'v', 'c': 'h', 'h': 'j', 'u': 'f', 'd': 'i', 'n': 'p', 'x': 'y', 'r': 'm', 't': 'u', 'o': 's', 'j': 'e', 'e': 'c', 'l': 'b', 'y': 'z', 'q': 'k', 'z': 'd', 'f': 't', 'p': 'r', 'm': 'l', 'i': 'o', 'w': 'x', 'a': 'q'}

您不会看到它们按字母顺序排列,但这是从无序容器中看到的。你知道吗

相关问题 更多 >