3

都市のリストと郵便番号のリストが必要です (NYC が都市リストの最初にある場合、NYS のコードがコード リストの最初になります)。xNYC の郵便番号に設定したいとします。私はこれを行うことが可能であることを知っています:

y = citylist.index('New York')
x = postcodelist[y]
xstring = str(x)

しかし、次のように、リストを同一視してこれを1行で行う方法はありますか?

x = postcodelist.citylist.index('New York').string
4

5 に答える 5

7

私が正しく理解していれば、基本的にキーのリストと値のリストとして扱いたい2つの並列リストがあります。もしそうなら、あなたは次のようなことをすることができます:

>>> places = ['New York', 'Texas', 'California']
>>> zips = ['01010', '70707', '90909']
>>> place_zip_map = dict(zip(places, zips))
>>> place_zip_map['New York']
'01010'

基本的に、場所のリストをキーとして、郵便番号/郵便番号のリストを値として使用zipし、それらを組み合わせて一連のキーと値のペアにし、を使用dictして、それらを相互にマップするdictを作成します。

編集:そして、郵便番号/郵便番号を同じプロセスを使用できる場所にマップする別の方法で辞書を作成したい場合は、のリストの順序を逆にするだけzipです。次に、どちらかを検索できる1つの構造が必要な場合は、結果の2つのdictを1つに結合できます。郵便番号と同じ名前の場所がない限り、衝突は発生しないはずです。

于 2012-08-03T19:59:17.100 に答える
4

pyzipcodeを使用できます:

>>> from pyzipcode import ZipCodeDatabase
>>> zcdb = ZipCodeDatabase()
>>> zcdb['10001'].city
u'New York'
>>> len(zcdb.find_zip(city="New York"))
167
>>> zcdb.find_zip(city="New York")[0].zip
u'10001'
>>> zcdb.find_zip(city="New York")[1].zip
u'10002'
>>> zcdb.find_zip(city="New York")[2].zip
u'10003'
于 2012-08-03T20:04:45.817 に答える
1

zipリストを正しい順序で生成した場合は、それらを一緒に反復処理するために使用できます。

for city, zipcode in zip(citylist, postcodelist):
  print city, zipcode
于 2012-08-03T19:59:09.660 に答える
0

こういう意味ですか?

x = str(postcodelist[citylist.index('New York')])
于 2012-08-03T19:58:50.733 に答える
0
str(postcodelist[citylist.index('New York')])

ただし、このような並列リストを使用しないことを検討することをお勧めします。通常は、「name」属性と「zip」属性を持つオブジェクトのリストのようなものを用意することをお勧めします。

于 2012-08-03T19:59:49.503 に答える