我想写一个导入ascii_lowercase的函数,并返回一个字典,其中键的字母为键,随机调整的键版本为值。
例如,
keys = "abcdefg..."
然后你将它洗牌并以gydwsk...
为例,字典看起来像
{'a':'g', 'b':'y', 'c':'d'...}
我不知道从哪里开始,任何帮助表示赞赏。
答案 0 :(得分:1)
一个班轮。您可以使用random.sample
来避免random.shuffle
的重新排序性质。然后使用zip
组合混洗和非混洗值,这些值可以直接传递给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'}
您不会按字母顺序看到它们,但这可以从无序容器中看到。
答案 1 :(得分:0)
您需要使用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)
<强>被修改强>
更简单的词典构建的好建议(来自评论。谢谢)
答案 2 :(得分:0)
import random
def f(keys):
shuffled = list(keys)
random.shuffle(shuffled)
return dict(zip(keys, shuffled))
答案 3 :(得分:0)
此代码应该有效(python版本&lt; 3.0):
import random
keys="abcdefg"
dictionary = {}
shuffled = ''.join(random.sample(keys,len(keys)))
shuffled_iterator = 0
for letter in keys:
dictionary[letter] = shuffled[shuffled_iterator]
shuffled_iterator +=1
print dictionary