2012-11-06 34 views
0

我有一個包含省數據的元組。Python元組操作 - 獲取值

CHOICES = (
     ('', ''), 
     ('United States', (
       ('AL', 'Alabama'), 
       ('AK', 'Alaska'), 
       ('AZ', 'Arizona'), 
       ('AR', 'Arkansas'), 
       ('CA', 'California'), 
       ('CO', 'Colorado'), 
       ('CT', 'Connecticut'), 
       ('DE', 'Delaware'), 
       ('DC', 'District of Columbia'), 
       ('FL', 'Florida'), 
       ('GA', 'Georgia'), 
       ('GU', 'Guam'), 
       ('HI', 'Hawaii'), 
       ('ID', 'Idaho'), 
       ('IL', 'Illinois'), 
       ('IN', 'Indiana'), 
       ('IA', 'Iowa'), 
       ('KS', 'Kansas'), 
       ('KY', 'Kentucky'), 
       ('LA', 'Louisiana'), 
       ('ME', 'Maine'), 
       ('MD', 'Maryland'), 
       ('MA', 'Massachusetts'), 
       ('MI', 'Michigan'), 
       ('MN', 'Minnesota'), 
       ('MS', 'Mississippi'), 
       ('MO', 'Missouri'), 
       ('MT', 'Montana'), 
       ('NE', 'Nebraska'), 
       ('NV', 'Nevada'), 
       ('NH', 'New Hampshire'), 
       ('NJ', 'New Jersey'), 
       ('NM', 'New Mexico'), 
       ('NY', 'New York'), 
       ('NC', 'North Carolina'), 
       ('ND', 'North Dakota'), 
       ('OH', 'Ohio'), 
       ('OK', 'Oklahoma'), 
       ('OR', 'Oregon'), 
       ('PA', 'Pennsylvania'), 
       ('PR', 'Puerto Rico'), 
       ('RI', 'Rhode Island'), 
       ('SC', 'South Carolina'), 
       ('SD', 'South Dakota'), 
       ('TN', 'Tennessee'), 
       ('TX', 'Texas'), 
       ('UT', 'Utah'), 
       ('VT', 'Vermont'), 
       ('VA', 'Virginia'), 
       ('VI', 'Virgin Islands'), 
       ('WA', 'Washington'), 
       ('WV', 'West Virginia'), 
       ('WI', 'Wisconsin'), 
       ('WY', 'Wyoming') 
      ) 
     ), 
     ('Canada', (
       ('AB', 'Alberta' , 1.05), 
       ('BC', 'British Columnbia', 1.12), 
       ('MB', 'Manitoba', 1.05), 
       ('NB', 'New Brunswick', 1.13), 
       ('NL', 'Newfoundland and Labrador', 1.13), 
       ('NT', 'Northwest Territories', 1.05), 
       ('NS', 'Nova Scotia', 1.15), 
       ('NU', 'Nunavut', 1.05), 
       ('PE', 'Prince Edward Island', 1.05), 
       ('SK', 'Saskatchewan', 1.05), 
       ('ON', 'Ontario', 1.13), 
       ('QC', 'Quebec', 1.05), 
       ('YT', 'Yukon', 1.05) 
      ) 
     ) 
    ) 

如果選擇加拿大省份,是否有一種基於省代碼的優雅方式?例。如果我省的ON有一個元組操作,我可以使用它來獲得值1.13。

謝謝。

+12

您在這裏使用了錯誤的數據結構。你想要一個字典,而不是一個元組。 –

+1

'[y [2] for x in CHOICES if x [0] ==「Canada」for y in x [1] if y [0] ==「ON」] [0]'是最優雅的表達方式,重新獲得,除非你使用字典。用'dict',可以是'CHOICES [「加拿大」] [「ON」] [1]'。 –

+0

接受以往問題的更多答案。 – Paddy3118

回答

3

評論突出顯示您的主要問題 - 不幸的數據結構。但是,您可以輕鬆地將嵌套元組轉換爲字典。關於Python> = 2.7:

>>> choices = {country: {t[0]: t[1:] for t in st} for country, st in CHOICES} 
>>> choices['Canada']['ON'][1] 
1.13 

注:這將使choices['United States']字典包含一個元素的元組的值。

0
Canada={CHOICES[2][1][x][0]:CHOICES[2][1][x][2]for x in range(len(a[2][1]))} 
    Canada["ON"]