如何随机排列与字典中某个键相关联的单词?
How do I shuffle the words that are connected to a key in a dictionary?
我有字典
GiftDict = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}
我想将字典中的值改组为不同的键。
我试过像这样把字典一分为二...
person = GiftDict.keys()
partner = GiftDict.values()
并用
打乱值
import random
random.shuffle(partner)
但我一直收到类型错误:'dict_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'}
如果您使用的是 Python 版本 < 3.7 Python 字典没有顺序,因此改组毫无意义。
如果您使用的是较新的 Python 版本,您可以像下面那样随机播放字典项目。
import random
l = list(GiftDict.items())
random.shuffle(l)
shuffled_dict = dict(l)
您的问题是方法 dict.values()
returns 类型为 dict_values
的对象不可订阅。您可以将其转换为一个列表,但这样打乱顺序无济于事。
您可以改用此函数来打乱字典:
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'}
如前所述here您不能重新排列字典。但是,您可以创建一个字典值列表,将其打乱顺序,然后使用相同的键和更新的值创建一个新字典。
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
我有字典
GiftDict = {'Seth':'A', 'Jeremy':'B', 'Ben':'C'}
我想将字典中的值改组为不同的键。
我试过像这样把字典一分为二...
person = GiftDict.keys()
partner = GiftDict.values()
并用
打乱值import random
random.shuffle(partner)
但我一直收到类型错误:'dict_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'}
如果您使用的是 Python 版本 < 3.7 Python 字典没有顺序,因此改组毫无意义。 如果您使用的是较新的 Python 版本,您可以像下面那样随机播放字典项目。
import random
l = list(GiftDict.items())
random.shuffle(l)
shuffled_dict = dict(l)
您的问题是方法 dict.values()
returns 类型为 dict_values
的对象不可订阅。您可以将其转换为一个列表,但这样打乱顺序无济于事。
您可以改用此函数来打乱字典:
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'}
如前所述here您不能重新排列字典。但是,您可以创建一个字典值列表,将其打乱顺序,然后使用相同的键和更新的值创建一个新字典。
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