2016-06-09 43 views
0

的是,有沒有辦法確定initial_list我只用該字典本身建立my_dict從,如何從哪個字典構建初始列表?

initial_list = [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), 
       (1,2), ('a','z'), ('aa','z')] 
my_dict = dict(initial_list) 

正如我已經找到了選項來獲得初始列表中的一個(但秩序在它是從物品原始列表不同)是通過使用zipdict.items

initial_list_from = zip(my_dict.keys(),my_dict.values()) 
print initial_list_from == initial_list #False 

initial_list_from = my_dict.items() 
print initial_list_from == initial_list #False 

與這種方法的問題是,my_dict == initial_list計算結果爲false,他們AREN 't same ...

+0

相關[Python字典,保持鍵/值的聲明相同的順序(http://stackoverflow.com/q/1867861) –

+0

@BhargavRao definetely看看,謝謝 –

回答

2

這是不可能的,因爲字典類不存儲密鑰的順序它是從創建。

要做到這一點的唯一方法是使用OrderedDict這是一個字典,它記住了鍵首次插入的順序。

from collections import OrderedDict 

initial_list = [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), 
        (1,2), ('a','z'), ('aa','z')] 
my_dict = OrderedDict(initial_list) 

initial_list_from = my_dict.items() 
print initial_list_from == initial_list # True 
+0

嘗試'my_dict.items( )'而不是'zip(my_dict.keys(),my_dict.values())'! – schwobaseggl

+0

@schwobaseggl謝謝,這是更清潔。 –