如何打乱字典中与关键字相连的单词



我有一本字典

GiftDict = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}

我想把这个字典中的值打乱排列到不同的键上
我试着像这样把字典一分为二。。。

person = GiftDict.keys()
partner = GiftDict.values()

用打乱数值

import random    
random.shuffle(partner)

但我一直得到一个类型错误:"图片值"对象不是可下标的

我想重新创建字典,但要使用打乱的值。这是去那里的正确方式吗?有什么建议吗?谢谢

如果您使用的是Python版本<3.7 Python dicts没有顺序,所以嘘是没有意义的。如果你使用的是较新的Python版本,你可以打乱dicts项目,如下所示。

import random
l = list(GiftDict.items())
random.shuffle(l)
shuffled_dict = dict(l)

您的问题是方法dict.values()返回类型为dict_values的对象,该对象不可下标。你可以把它投射到一个列表中,但这样洗牌没有帮助。

相反,您可以使用此功能来打乱dict:

import random
def shuffle_dict(dic):
new_values = list(dic.values())
random.shuffle(new_values)
return dict(zip(dic.keys(), new_values))

现在:

shuffle_dict(GiftDict)
# > {'Seth': 'B', 'Jeremy': 'C', 'Ben': 'A'}

如前所述,您无法重新整理字典。但是,您可以创建一个字典值的列表,对其进行混洗,然后创建一个具有相同键和更新值的新字典。

import random
original = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}
result = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}
values = list(original.values())
# Shuffle values 
random.shuffle(values)
# Set values back into the result dictionary
for i,j in enumerate(original.keys()):
result[j] = values[i]
# Now the result dictionary contains the original keys and updated values

您需要:

import random    
random.shuffle(list(partner)) # GiftDict.values() can not be shuffled as such, it needs to be converted as list

一个完整的例子:

import random
d = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}
v = list(d.values())
random.shuffle(v)
for i,k in enumerate(d.keys()):
d[k] = v[i]
print (d)

输出:

{'Seth': 'B', 'Jeremy': 'A', 'Ben': 'C'}

相关内容

  • 没有找到相关文章

最新更新