2024-06-28 20:49:34 发布
网友
我想写一个函数,它导入ascii\u小写并返回一个字典,其中键的字母作为键,键的随机乱序版本作为值。你知道吗
例如
keys = "abcdefg..."
然后你把它洗牌,以gydwsk...为例,字典应该是这样的
gydwsk...
{'a':'g', 'b':'y', 'c':'d'...}
我不知道从哪里开始,任何帮助都很感激。你知道吗
你需要用random.shuffle洗牌。举个例子:
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的缩写是为了简洁起见,对于大多数生产代码来说,这种缩写可能有点过于粗暴。你知道吗
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'}
您不会看到它们按字母顺序排列,但这是从无序容器中看到的。你知道吗
你需要用
random.shuffle
洗牌。举个例子:编辑
对于更简单的dict构造的好建议(来自评论。(谢谢)
一行。您可以使用^{} 来避免^{} 的就地重新排序特性。然后使用^{} 组合无序化和非无序化的值,这可以直接传递给dict构造函数来生成新的dict
在本例中,使用
alc
作为ascii_lowercase
的缩写是为了简洁起见,对于大多数生产代码来说,这种缩写可能有点过于粗暴。你知道吗您不会看到它们按字母顺序排列,但这是从无序容器中看到的。你知道吗
相关问题 更多 >
编程相关推荐