0

州のデータを含むタプルがあります。

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を取得するために使用できるタプル操作があります。

ありがとう。

4

2 に答える 2

3

コメントはあなたの主な問題、つまり不幸なデータ構造を浮き彫りにします。ただし、ネストされたタプルをdictに簡単に変換できます。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']dictに値として1要素のタプルが含まれるようになります。

于 2012-11-06T16:17:06.197 に答える
0
   Canada={CHOICES[2][1][x][0]:CHOICES[2][1][x][2]for x in range(len(a[2][1]))}
   Canada["ON"]
于 2012-11-06T17:18:28.113 に答える