回答編集履歴

4

追記

2019/07/02 07:19

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -60,4 +60,34 @@
60
60
 
61
61
 
62
62
 
63
+ ---
64
+
63
65
  検索キーが常に単一なら充分高速に実装できますね。
66
+
67
+ ```Python
68
+
69
+ class MultipleDict(dict):
70
+
71
+ def __setitem__(self, keys, value):
72
+
73
+ for key in keys:
74
+
75
+ dict.__setitem__(self, key, value)
76
+
77
+
78
+
79
+ md = MultipleDict()
80
+
81
+ md[0, 1, 2] = 42
82
+
83
+ md[9, 8, 7] = 6
84
+
85
+
86
+
87
+ print(md) # => {0: 42, 1: 42, 2: 42, 9: 6, 8: 6, 7: 6}
88
+
89
+ ```
90
+
91
+
92
+
93
+ 逆に面倒くさくなるだけな気がしますが。

3

追記

2019/07/02 07:19

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -56,4 +56,8 @@
56
56
 
57
57
  複数キーでアイテムを獲得できるクラスを自作するのはそこまで面倒では無いですが、
58
58
 
59
- 実装にハッシュテーブルが使えないので機能面で劣ります。
59
+ ~~実装にハッシュテーブルが使えないので機能面で劣ります。~~
60
+
61
+
62
+
63
+ 検索キーが常に単一なら充分高速に実装できますね。

2

追記

2019/07/02 07:15

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -29,3 +29,31 @@
29
29
  }
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ 辞書を諦めて関数にしても良いでしょう。
36
+
37
+ ```Python
38
+
39
+ def AB(k):
40
+
41
+ if k in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']:
42
+
43
+ return 'work'
44
+
45
+ if k in ['Saturday', 'Sunday']:
46
+
47
+ return 'holiday'
48
+
49
+
50
+
51
+ raise ValueError
52
+
53
+ ```
54
+
55
+
56
+
57
+ 複数キーでアイテムを獲得できるクラスを自作するのはそこまで面倒では無いですが、
58
+
59
+ 実装にハッシュテーブルが使えないので機能面で劣ります。

1

追記

2019/07/02 07:09

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -13,3 +13,19 @@
13
13
  }
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ こういうふうに作っても良いですが、タイプ数は劇的には変わらないです。
20
+
21
+ ```Python
22
+
23
+ AB = {
24
+
25
+ **{k: 'work' for k in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']},
26
+
27
+ **{k: 'holiday' for k in ['Saturday', 'Sunday']}
28
+
29
+ }
30
+
31
+ ```