2012-10-10 106 views
1

我正在使用Python 2.7並希望在Django表單中創建一個選項。我有一個我想要的選項下拉列表中的項目字典,但想知道最pythonic方式來處理這個。更優雅的從列表創建元組元組的方法

這裏是我的解決方案:

my_dict = { 
    'AL' : 'Alabama', 
    'AK' : 'Alaska', 
    etc... 
} 

my_list = [] 
for value in (my_dict): 
    my_list.append('({0}, {1})'.format(value, gateways.get(value))) 

my_tuple = '({0})'.format(','.join(my_list)) 

print my_tuple 


(('AL', 'Alabama'),('AK', 'Alaska'),etc...) 

這是可行的,但它沒有看起來非常優雅給我。有人可以提出更好的解決方案嗎

+1

你正在創建的字符串,而不是元組。而你的輸出就會'((AL,阿拉巴馬州),(AK,阿拉斯加),...)'因爲編碼(不含引號)。 –

回答

4

其實,你不一定需要一個元組創建一個選擇,相當的列表:

>>> d = {'AL' : 'Alabama', 'AK' : 'Alaska',} 
>>> d.items() 
[('AK', 'Alaska'), ('AL', 'Alabama')] 

對於元組:

>>> tuple(d.items()) 
(('AK', 'Alaska'), ('AL', 'Alabama')) 
+0

我可以挖掘它......謝謝。這更優雅。 – Rico

+0

抱歉defuz,我誤解了對話,爲所有人道歉。 – Netwave

0

您可以使用列表理解來代替循環

my_list = ['({0}, {1})'.format(value, gateways.get(value)) for value in my_dict] 

即使它直接寫在的產生的發電機表達210

my_tuple = '({0})'.format(','.join('({0}, {1})'.format(value, gateways.get(value)) for value in my_dict)) 
相關問題