Skip to content
Advertisement

How do I shuffle the words that are connected to a key in a dictionary?

I have a dictionary

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

I want to shuffle the values in this dictionary to different keys.
I tried splitting the dictionary into two like this…

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

And shuffling the values with

import random    
random.shuffle(partner)

But I keep getting a type error:’dict_values’ object is not subscriptable

I want to recreate the dictionary but with shuffled values. Is this the correct way to get there? Any tips? Thanks!

Advertisement

Answer

As mentioned here you can’t reshuffle a dictionary. However, you can create a list of the dictionary’s values, shuffle that, and then create a new dictionary with the same keys and updated values.

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
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement