teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

マジックナンバーを消し忘れたため修正

2021/09/03 10:52

投稿

lehshell
lehshell

スコア1180

answer CHANGED
@@ -1,8 +1,10 @@
1
1
  > TypeError: unhashable type: 'numpy.ndarray'
2
+
2
3
  numpy.ndarray は unhashable なので辞書のキーにはできないということです。
3
4
  (hashable なものしか辞書のキーにはできません)
4
5
 
5
6
  このようにすればいいでしょう。
7
+ range(0,10) を range(len(data)) に修正しました。
6
8
 
7
9
  ```Python
8
10
  import numpy as np
@@ -13,8 +15,10 @@
13
15
  usecols=(1,2,3)
14
16
  )
15
17
 
16
- keys = [(int(data[i:i+1,0:1]), int(data[i:i+1,1:2])) for i in range(0,10)]
18
+ # keys = [(int(data[i:i+1,0:1]), int(data[i:i+1,1:2])) for i in range(0,10)]
17
- values = [int(data[i:i+1,2:3]) for i in range(0,10)]
19
+ # values = [int(data[i:i+1,2:3]) for i in range(0,10)]
20
+ keys = [(int(data[i:i+1,0:1]), int(data[i:i+1,1:2])) for i in range(len(data))] # 10 削除
21
+ values = [int(data[i:i+1,2:3]) for i in range(len(data))] # 10 削除
18
22
  dic = {n:values[i] for i,n in enumerate(keys)}
19
23
  print(dic) # {(2, 20): 100, (4, 18): 200, ...}
20
24
  ```