回答編集履歴

1

追記

2018/06/10 10:11

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,3 +1,73 @@
1
+ エラーの原因
2
+
3
+ ---
4
+
5
+ > 下記のコードを追加したら、辞書を読み込む際に、エラーが出てしまいました。
6
+
7
+
8
+
9
+ > ```Python
10
+
11
+ with open("rep_dict.txt") as f:
12
+
13
+ s = f.read()
14
+
15
+ print(s)
16
+
17
+ dict_rep = dict(line.strip().split(',') for line in s)
18
+
19
+ dict_rep
20
+
21
+
22
+
23
+ > ValueError: dictionary update sequence element #0 has length 1; 2 is required
24
+
25
+ > ```
26
+
27
+
28
+
29
+ 期待に反して、lineに各行が与えられていないからです。
30
+
31
+ ```Python
32
+
33
+ print([line for line in s]) # => ['郵', '便', '番', '号', ',', '〒', '1', '0', '0', '-', '8', '1', '1', '1', '\n', '住', '所', ',', '東', '京', '都', '千', '代', '田', '区', '千', '代', '田', '1', '-', '1', '\n', '宛', '先', '指', '名', ',', '山', '田', '\u3000', '太', '郎', '\n', '案', '件', ',', 'H', '社', '向', 'け', '×', '×', 'シ', 'ス', 'テ', 'ム']
34
+
35
+ ```
36
+
37
+
38
+
39
+ 次のように書けば良いです。
40
+
41
+ ```Python
42
+
43
+ dict_rep = dict(line.strip().split(',') for line in s.split('\n'))
44
+
45
+ ```
46
+
47
+
48
+
49
+ また、さらに簡潔にも書けます。
50
+
51
+ ```Python
52
+
53
+ with open("rep_dict.txt") as f:
54
+
55
+ # s = f.read()
56
+
57
+ # print(s)
58
+
59
+ dict_rep = dict(line.strip().split(',') for line in f)
60
+
61
+ print(dict_rep)
62
+
63
+ ```
64
+
65
+
66
+
67
+ 書いてみた
68
+
69
+ ---
70
+
1
71
  面白そうなので、ちょっと書いてみました。
2
72
 
3
73
  ```Python