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

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

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

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

Q&A

解決済

2回答

650閲覧

辞書オブジェクトが作れない!

Ponde_ling

総合スコア8

Python 3.x

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

0グッド

1クリップ

投稿2019/08/24 10:40

テキストファイルから読み込んだリストを辞書オブジェクトに変換したいです。呼び出したテキストの、¥nは消去できますが、そこから、がどうしてもできないです。
※#======の上は問題なく動作してます。

python3

1with open('data/English_words.txt', 'r', encoding='utf_8' 2 ) as file: 3 lines = file.readlines() 4 5new_lines = [] 6for line in lines: 7 line = line.rstrip('\n') 8 9 if line != '': 10 new_lines.append(line) 11#print(new_lines) 12 13#ここまでは問題なく動作してます。 14#======================================================================= 15separate = [] 16 17for line in new_lines: 18 sp = line.split('\t') #1行データをタブの所で分割 19 separate.append(sp)  #分割したあとに2要素のリストをリストseparateに追加 20words = dict(separate)   #dict()関数で辞書オブジェクトを作る。 21 22print(words)

English_words.txt

crucial

1subsequent その後の 2devise 考察する 3strain 負担 4distinct 明確な 5incorporate 取り入れる 6eliminate 排除する 7privilege 特権 8retain 記憶する 9seize 掴む 10perceive 知覚する 11prominent 著名な 12integrate 一体化する 13anticipate 予想する 14disturb 邪魔する 15respective それぞれ 16perspective 観点 17magnificent 壮大な

エラーコード

Traceback

1 File "C:/Users/beret/PycharmProjects/SampleProject/sm3.py", line 17, in <module> 2 words = dict(separate) 3ValueError: dictionary update sequence element #0 has length 1; 2 is required 4 5

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

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

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

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

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

guest

回答2

0

ベストアンサー

入力ファイルの区切り文字がタブの場合だと正常に動作しますが半角空白などだとエラーが再現します。
入力ファイルの区切り文字を確認ください。
以下検証コードです。

Python

1from io import StringIO 2 3def to_dict(s): 4 lines = StringIO(s).readlines() 5 6 new_lines = [] 7 for line in lines: 8 line = line.rstrip('\n') 9 10 if line != '': 11 new_lines.append(line) 12 13 separate = [] 14 15 for line in new_lines: 16 sp = line.split('\t')#1行データをタブの所で分割 17 separate.append(sp) #分割したあとに2要素のリストをリストseparateに追加 18 19 words = dict(separate) #dict()関数で辞書オブジェクトを作る。 20 return words 21 22print( to_dict('apple\tりんご\nbanana\tバナナ\n')) # {'apple': 'りんご', 'banana': 'バナナ'} 23print( to_dict('apple りんご\nbanana バナナ\n')) # ValueError: dictionary update sequence element #0 has length 1; 2 is required

投稿2019/08/24 11:03

編集2019/08/24 11:11
can110

総合スコア38262

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

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

0

辞書は「キー」と「値」から出来ています。
それぞれをペアとして登録してください。

下記はドキュメントからの抜粋です。(https://docs.python.org/ja/3/tutorial/datastructures.html)

Python

1dict() コンストラクタは、キーと値のペアのタプルを含むリストから辞書を生成します: 2 3>>> 4>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) 5{'sape': 4139, 'guido': 4127, 'jack': 4098}

投稿2019/08/24 10:55

meg_

総合スコア10579

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問