Since test_list
simply contains the values in test_dict
, you can shuffle it and then recreate the former from the results of the latter.
Note that if this correspondence between the two variables exists, having test_list
is redundant — it's just list(test_dict.values())
.
from collections import dequefrom pprint import pprintfrom random import shuffletest_dict = {3.0: deque([0.897, 24, 45]), 2.0: deque([0.0, 0.5, 56]), 9.0: deque([3.4, 0.9, 0.5])}test_list = [deque([0.897, 24, 45]), deque([0.0, 0.5, 56]), deque([3.4, 0.9, 0.5])]print('Before:')pprint(test_dict, sort_dicts=False)print('----')pprint(test_list, width=40)items = list(test_dict.items())shuffle(items)test_dict = dict(items)test_list = list(test_dict.values())print('\nAfter:')pprint(test_dict, sort_dicts=False)print('----')pprint(test_list, width=40)
Results:
Before:{3.0: deque([0.897, 24, 45]), 2.0: deque([0.0, 0.5, 56]), 9.0: deque([3.4, 0.9, 0.5])}----[deque([0.897, 24, 45]), deque([0.0, 0.5, 56]), deque([3.4, 0.9, 0.5])]After:{9.0: deque([3.4, 0.9, 0.5]), 3.0: deque([0.897, 24, 45]), 2.0: deque([0.0, 0.5, 56])}----[deque([3.4, 0.9, 0.5]), deque([0.897, 24, 45]), deque([0.0, 0.5, 56])]
P.S. An even shorter way to do it would be to use random.sample()
instead of shuffle()
:
test_dict = dict(random.sample(test_dict.items(), k=len(test_dict)))test_list = list(test_dict.values())