質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

181閲覧

python 同じ値を削除したい

klzu1028

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/25 09:16

編集2019/03/25 09:21

JSONで書かれたデータを取得、同じキーをリスト化させました。
その中からユニークな数値のみで残したく
一度tupleにして、リストに戻しました。
中身を別ツールで確認すると、一部重複している値がまだ残っている状態です。
何が足りていないかアドバイスいただけないでしょうか。

URL = 'XXXXX' RES = urllib.request.urlopen(URL) CONTENT = json.loads(RES.read().decode('utf-8')) ip_list = [] for x in CONTENT: ip_list.append(x.get("ips","")) list_of_tuples = [ tuple(x) for x in ip_list ] unique_list = list(set(list_of_tuples)) list_of_iplist = [ list(x) for x in unique_list ] pprint.pprint(list_of_iplist)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/03/25 09:40

ip_list 変数の中身はどのような値になってますか?
klzu1028

2019/03/25 09:50

ip_listの中身はこのようになっています。 ['IPアドレス','IPアドレス','IPアドレス','IPアドレス','IPアドレス']['IPアドレス','IPアドレス','IPアドレス','IPアドレス','IP]['IPアドレス','IPアドレス','IPアドレス']['IPアドレス','IPアドレス','IPアドレス','IPアドレス','IPアドレス'] IPアドレスがかぶっている箇所があるので、全体の中から同じIPは1つだけにさせる処理を書いたつもりなのですが、 まだかぶっている部分があり、どこが問題がわからず。。
tiitoi

2019/03/25 09:52

['IPアドレス','IPアドレス', ...] という1次元配列ではなく、なぜ2次元配列なのでしょうか?
klzu1028

2019/03/25 10:15

申し訳ありません、検索したのですが、キーに紐づいている値を持ってきたいという自分が実施している事までしかわからず。 2次元配列状態で表示されている理由が説明できないです。
guest

回答1

0

ベストアンサー

以下のようにしてはいかがでしょうか。

  1. 2次元配列を1次元配列にする。
  2. set() でセットに変換することで重複する値を除き、list() でリストに戻す。

python

1ip_addrs = [['247.124.49.147', 2 '43.161.249.61', 3 '43.161.249.61'], 4 ['254.152.178.255', 5 '43.204.250.165'], 6 ['126.16.42.79', 7 '254.152.178.255', 8 '166.44.248.83'], 9 ['254.152.178.255', 10 '24.117.72.116']] 11 12def flatten(nested_list): 13 return [e for inner_list in nested_list for e in inner_list] 14 15# 2次元配列を1次元配列にする。 16ip_addrs = flatten(ip_addrs) 17print(ip_addrs) 18# ['247.124.49.147', '43.161.249.61', '43.161.249.61', '254.152.178.255', 19# '43.204.250.165', '126.16.42.79', '254.152.178.255', '166.44.248.83', 20# '254.152.178.255', '24.117.72.116'] 21 22# 重複を除く。 23ip_addrs = list(set(ip_addrs)) 24# ['247.124.49.147', '43.161.249.61', '43.161.249.61', '254.152.178.255', '43.204.250.165', 25# '126.16.42.79', '254.152.178.255', '166.44.248.83', '254.152.178.255', '24.117.72.116']

投稿2019/03/25 11:06

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

klzu1028

2019/03/25 12:17

2次元配列を1次元配列にするっていう発想が全くなかったです。flattenというのも初めて知りました。 ありがとうございます。なぜそれで動くのかという挙動確認を細かく勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問