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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

770閲覧

pythonで重複データを削除したい

pukupuq

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/07/26 06:09

前提・実現したいこと

SpotifyAPIで取得したデータを用いてpythonからjsonファイルを出力させようとしています。上のコードで出力したjsonファイルに配列alで{'id': 'アーティスト名'}を追加したくて下のコードを書きました。しかし同じアーティスト名が出てきて要素が重複してしまうのでsetを使って重複なしのデータ集合を作りたいです。

該当のソースコード

python

1artist_id = '0GtBUVp1cWdIUKwm2GHTHc' 2result = spotify.artist_related_artists(artist_id) 3 4al = [] 5for artist in result['artists']: 6 artist_name = artist['name'] 7 al.append({'id': '{0}'.format(artist_name)}) 8 9dictionary = {"nodes": al} 10 11# Pythonオブジェクトをファイル書き込み 12savepath = 'sample2.json' 13with open(savepath, 'w') as outfile: #wで新しく書き込み 14 json.dump(dictionary ,outfile, ensure_ascii=False)

python

1#上のファイルidを追加 2artist_id = '6bCInSZj1C1H8Mz7m4LqYA' 3result = spotify.artist_related_artists(artist_id) 4 5for artist in result['artists']: 6 artist_name = artist['name'] 7 al.append({'id': '{0}'.format(artist_name)}) 8 9uniqued = set(al) 10 11dictionary = {"nodes": uniqued} 12 13# Pythonオブジェクトをファイル書き込み 14savepath = 'sample2.json' 15with open(savepath, 'a') as outfile: #aで追加書き込み 16 json.dump(dictionary ,outfile)

発生している問題・エラーメッセージ

unhashable type: 'dict'

json.dump()は引数に辞書型を入れると教わったのでここからどうすればよいかわからなくなってしまいました。重複をなくす方法を教えていただきたいです。

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

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

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

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

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

guest

回答1

0

最初に取得した result から artists キーの値を
setadd() してから
dict 型の list に変換するのはいかがでしょうか?:

python

1import json 2 3result = { 4 'artists': [ 5 {'name': 'example1'}, 6 {'name': 'example2'}, 7 {'name': 'example1'}, 8 {'name': 'example2'}, 9 ], 10} 11 12al = set() 13for artist in result['artists']: 14 al.add(artist['name']) 15 16uniqued = [{"id": name} for name in al] 17 18dictionary = {"nodes": uniqued} 19 20# Pythonオブジェクトをファイル書き込み 21savepath = 'sample2.json' 22with open(savepath, 'a') as outfile: #aで追加書き込み 23 json.dump(dictionary ,outfile)

実行結果:

json:sample2.json

1{"nodes": [{"id": "example1"}, {"id": "example2"}]}

投稿2020/07/26 06:56

y_shinoda

総合スコア3272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問