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

回答編集履歴

4

追記

2019/07/02 07:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -29,4 +29,19 @@
29
29
  複数キーでアイテムを獲得できるクラスを自作するのはそこまで面倒では無いですが、
30
30
  ~~実装にハッシュテーブルが使えないので機能面で劣ります。~~
31
31
 
32
+ ---
32
- 検索キーが常に単一なら充分高速に実装できますね。
33
+ 検索キーが常に単一なら充分高速に実装できますね。
34
+ ```Python
35
+ class MultipleDict(dict):
36
+ def __setitem__(self, keys, value):
37
+ for key in keys:
38
+ dict.__setitem__(self, key, value)
39
+
40
+ md = MultipleDict()
41
+ md[0, 1, 2] = 42
42
+ md[9, 8, 7] = 6
43
+
44
+ print(md) # => {0: 42, 1: 42, 2: 42, 9: 6, 8: 6, 7: 6}
45
+ ```
46
+
47
+ 逆に面倒くさくなるだけな気がしますが。

3

追記

2019/07/02 07:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -27,4 +27,6 @@
27
27
  ```
28
28
 
29
29
  複数キーでアイテムを獲得できるクラスを自作するのはそこまで面倒では無いですが、
30
- 実装にハッシュテーブルが使えないので機能面で劣ります。
30
+ ~~実装にハッシュテーブルが使えないので機能面で劣ります。~~
31
+
32
+ 検索キーが常に単一なら充分高速に実装できますね。

2

追記

2019/07/02 07:15

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -13,4 +13,18 @@
13
13
  **{k: 'work' for k in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']},
14
14
  **{k: 'holiday' for k in ['Saturday', 'Sunday']}
15
15
  }
16
- ```
16
+ ```
17
+
18
+ 辞書を諦めて関数にしても良いでしょう。
19
+ ```Python
20
+ def AB(k):
21
+ if k in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']:
22
+ return 'work'
23
+ if k in ['Saturday', 'Sunday']:
24
+ return 'holiday'
25
+
26
+ raise ValueError
27
+ ```
28
+
29
+ 複数キーでアイテムを獲得できるクラスを自作するのはそこまで面倒では無いですが、
30
+ 実装にハッシュテーブルが使えないので機能面で劣ります。

1

追記

2019/07/02 07:09

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -5,4 +5,12 @@
5
5
  "Thursday": "work", "Friday": "work",
6
6
  "Saturday": "holiday", "Sunday": "holiday"
7
7
  }
8
+ ```
9
+
10
+ こういうふうに作っても良いですが、タイプ数は劇的には変わらないです。
11
+ ```Python
12
+ AB = {
13
+ **{k: 'work' for k in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']},
14
+ **{k: 'holiday' for k in ['Saturday', 'Sunday']}
15
+ }
8
16
  ```