前提・実現したいこと
初めて質問させていただきます。
Python3で現在地から最寄駅の情報を表示するシステムを作っています。
緯度経度でリクエストすると、最寄駅情報が帰ってくるAPIを利用しています。
APIのサンプル
http://express.heartrails.com/api/json?method=getStations&x=139.7505027&y=35.7048605
レンスポンス [{'distance': '360m', 'line': '東京メトロ南北線', 'name': '後楽園', 'next': '東大前', 'postal': '1120002', 'prefecture': '東京都', 'prev': '飯田橋', 'x': 139.751864, 'y': 35.707898}, {'distance': '360m', 'line': '東京メトロ丸ノ内線', 'name': '後楽園', 'next': '本郷三丁目', 'postal': '1120003', 'prefecture': '東京都', 'prev': '茗荷谷', 'x': 139.751864, 'y': 35.707898}, {'distance': '450m', 'line': '都営三田線', 'name': '水道橋', 'next': '春日', 'postal': '1130033', 'prefecture': '東京都', 'prev': '神保町', 'x': 139.75516, 'y': 35.703398}, {'distance': '470m', 'line': 'JR中央線', 'name': '水道橋', 'next': '飯田橋', 'postal': '1010061', 'prefecture': '東京都', 'prev': '御茶ノ水', 'x': 139.754312, 'y': 35.702039}, ・・・ 以下略 上記のレスポンスデータから、↓ここまでは自分で取得できました。 '東京メトロ南北線 後楽園駅 360m', '東京メトロ丸ノ内線 後楽園駅 360m', '都営三田線 水道橋駅 450m', 'JR中央線 水道橋駅 470m', 'JR総武線 水道橋駅 470m', '東京メトロ東西線 飯田橋駅 540m', 【最終的にやりたいこと】 駅名と距離が同じ場合は以下のようにまとめたいです。 距離が近いものから順に表示したいです。 '東京メトロ南北線・丸ノ内線 後楽園駅 360m', #同じメトロなので、まとめる '都営三田線 水道橋駅 450m', 'JR中央線・総武線 水道橋駅 470m', #同じJRなので、まとめる '東京メトロ東西線 飯田橋駅 540m', ↓こちらでも構いません。 '東京メトロ南北線ほか 後楽園駅 360m', #同じメトロなので、最初の路線だけ表記して、「ほか」を追加 '都営三田線 水道橋駅 450m', 'JR中央線ほか 水道橋駅 470m', #同じJRなので、最初の路線だけ表記して、「ほか」を追加 '東京メトロ東西線 飯田橋駅 540m',
該当のソースコード
以下のようなif文をfor rangeで回したりしているのですが、思うような結果が得られずに困っています。
もっとスマートな方法があると思いますが、これしか思いつかずで、、、
Python3
1#駅同じ・距離同じ場合 2if 駅 == 駅+1 and 距離 == 距離+1: 3 処理1 4 5#駅同じ・距離が違う場合 6if 駅 == 駅+1 and 距離 != 距離+1: 7 処理2 8 9#駅違う・距離同じ場合 10if 駅 != 駅+1 and 距離 == 距離+1: 11 処理3 12 13#駅違う・距離違う場合 14else: 15 処理4 16
試したこと
zip()やenumerate()なども検討しましたが、どうにも正解にたどり着けませんでした。
どうかお力をお貸しいただけないでしょうか。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/05 11:59