我有類似Python的有序字典常規字典
[('first', 1), ('second', 2), ('third', 3)]
,我想一個內置的功能,使像
{'first': 1, 'second': 2, 'third': 3}
是任何人都知道的一個內置的Python函數提供而不是有一個循環來處理它?
需要與Python> = 2.6
我有類似Python的有序字典常規字典
[('first', 1), ('second', 2), ('third', 3)]
,我想一個內置的功能,使像
{'first': 1, 'second': 2, 'third': 3}
是任何人都知道的一個內置的Python函數提供而不是有一個循環來處理它?
需要與Python> = 2.6
dict
工作,可以採取一個元組列表,並將其轉換爲鍵值對。
>>> lst = [('first', 1), ('second', 2), ('third', 3)]
>>> dict(lst)
{'second': 2, 'third': 3, 'first': 1}
完美的工作就像一個魅力 – WojonsTech 2013-04-20 07:47:12
只是適用dict()
到列表:
In [2]: dict([('first', 1), ('second', 2), ('third', 3)])
Out[2]: {'first': 1, 'second': 2, 'third': 3}
完美的工作就像一個魅力 – WojonsTech 2013-04-20 07:46:37
還不如更高雅/簡單dict(my_list)
波動性的回答提出...
我也建議:
my_list = [('first', 1), ('second', 2), ('third', 3)]
my_dict = {k:v for k,v in my_list}
當你必須從原始過濾一些元素時它更有用l序列。
my_list = [('first', 1), ('second', 2), ('third', 3)]
my_dict = {k:v for k,v in my_list if k!='third'}
或
my_dict = {k:v for k,v in my_list if test_value(v)} # test_value being a function return bool
的評論說,它僅適用於蟒蛇> = 2.7
任何拉森你爲什麼會建議這種方式在其他方式和做你知道,如果這將在python> = 2.6 – WojonsTech 2013-04-20 08:19:05
工作不超過我覺得最pythonic的字典(my_list)。但是我大部分時間都在使用list和dict理解,所以我將它用於python> = 2.7。我建議這樣做的一個原因是,大部分時間都有可能產生最終字典的元素的條件,並且dict comprenhension和list comprehension機制使得過濾變得非常簡單:my_dict = {k:v for k,v in my_list if k!='第三'}'。我在這些問題中增加了一些其他示例。 – 2013-04-20 08:24:10
在這種情況下絕對沒有理由使用它。 'dict(...)'更快,看起來更好,適用於每個Python。這**只適用於** = 2.7 – jamylak 2013-04-20 08:25:12
您的輸入不是一個有序字典。這是一個元組列表。你想保留條目的順序嗎? – 2013-04-20 08:00:15
你使用'collections.OrderedDict'還是不是? – jamylak 2013-04-20 08:20:51
@TimPietzcker我在inspect.getframeinfo(框架)上調用了__dict__(框架) – WojonsTech 2013-04-20 08:25:04