从列表中创建字典

时间:2017-03-30 00:42:56

标签: python numpy dictionary

我想写一个导入ascii_lowercase的函数,并返回一个字典,其中键的字母为键,随机调整的键版本为值。

例如,

keys = "abcdefg..." 

然后你将它洗牌并以gydwsk...为例,字典看起来像

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

我不知道从哪里开始,任何帮助表示赞赏。

4 个答案:

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