2016-06-15 2 views
0

Подобный вопрос, который я видел в Stack Overflow, касался списков списков (был плохой заголовок), и когда я попытался использовать random.shuffle в моем списке dicts за этот ответ, он сделал весь объект объект None-type.Случайно перетасовывание списка словарей

У меня есть список словарей, вроде этого:

[ 
{'a':'1211', 'b':'1111121','c':'23423'}, 
{'a':'101', 'b':'2319','c':'03431'}, 
{'a':'3472', 'b':'38297','c':'13048132'} 
] 

Я хочу, чтобы случайно перетасовать, как это.

[ 
{'a':'3472', 'b':'38297','c':'13048132'}, 
{'a':'1211', 'b':'1111121','c':'23423'}, 
{'a':'101', 'b':'2319','c':'03431'} 
] 

Как это сделать?

+0

'random.shuffle' должен работать. Не уверен, почему он дает вам объект типа «Нет». – RobertR

+0

Если вы хотите случайным образом перетасовать элементы списка, независимо от того, что они есть, просто используйте ['random.shuffle'] (https://docs.python.org/3/library/random.html#random.shuffle). В противном случае определите, что вы подразумеваете под случайным перетасовкой. Обратите внимание, что 'random.shuffle' ** изменен ** исходный список. Используйте его как: 'my_list = [...]; random.shuffle (my_list); print (my_list) ' – Bakuriu

+5

' random.shuffle' перетасовывает список и возвращает 'None'. Вероятно, вы выполняете 'x = random.shuffle (x)', когда вы должны выполнять 'random.shuffle (x)' без назначения. –

ответ

2

random.shuffle должно работать. Поэтому я думаю, что вы думали он дает вам объект None типа происходит потому, что вы делаете что-то вроде

x = random.shuffle(...) 

но random.shuffle не возвращает ничего, он изменяет список вместо:

x = [{'a':'3472', 'b':'38297','c':'13048132'}, 
    {'a':'1211', 'b':'1111121','c':'23423'}, 
    {'a':'101', 'b':'2319','c':'03431'}] 
random.shuffle(x) # No assignment 
print(x) 
Смежные вопросы