讓我們看看這本詞典重新排序字典隨機
>>> test = {'to have': True, 'to get': False, 'having': False}
想象
>>> test.random_order()
{'having': False, 'to get': False, 'to have': True}
我怎樣才能重新排序隨機?我應該使用OrderedDict
和random.shuffle
?如果是這樣,我該如何將它們結合起來?
讓我們看看這本詞典重新排序字典隨機
>>> test = {'to have': True, 'to get': False, 'having': False}
想象
>>> test.random_order()
{'having': False, 'to get': False, 'to have': True}
我怎樣才能重新排序隨機?我應該使用OrderedDict
和random.shuffle
?如果是這樣,我該如何將它們結合起來?
只是洗牌的鍵/值對(項目),並把它們交給OrderedDict
:
items = test.items()
random.shuffle(items)
OrderedDict(items)
它不會更新字典,會嗎? 'random.shuffle()'什麼都不會返回 – 2012-01-09 12:43:22
哦,是的,那是真的,對不起!修復。 – 2012-01-09 13:05:24
感謝您的更新 – 2012-01-09 15:40:51
你的問題就沒有意義了嚴格意義上 - 一本字典是從集映射的鍵值爲集合的值。因此,他們沒有訂單,因爲集合沒有訂單。您打印字典時看到的順序是「隨機的」,不被信任。你可以看到在行動隨機性當您使用-R
標誌與現代的Python:
$ python -R -c 'print dict(foo=10, bar=20, baz=30)'
{'baz': 30, 'foo': 10, 'bar': 20}
$ python -R -c 'print dict(foo=10, bar=20, baz=30)'
{'foo': 10, 'baz': 30, 'bar': 20}
而不是使用字典的,我想你應該自認爲數據結構列表中有一個順序。如果你開始用dict
,然後用
items = test.items()
random.shuffle(items)
獲得洗牌(key, value)
對列表。你可以將它們傳遞給OrderedDict
,這會給你一個字典,其中的鍵與它們相關聯。
我瞭解連貫性的湖泊。我想我應該用一個列表來代替。 – 2012-01-09 12:33:53
使用列表而不是詞典簡化了我在這個問題上的生活:)謝謝。 – 2012-01-09 12:55:12
如何特別使用列表比字典更好? – mango 2014-03-14 05:53:47
我終於使用列表而不是字典。 – 2012-01-09 12:59:47