回答編集履歴

4

追記

2019/01/27 15:57

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -25,3 +25,27 @@
25
25
  {'eee': 'http://eee', 'fff': 'http://fff'}
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ ###### 値がunhashableな場合
32
+
33
+ ```python
34
+
35
+ >>> s1 = {"aaa":["http://aaa"],"bbb":["http://bbb"],"ccc":["http://ccc"],"ddd":["http://ddd"]}
36
+
37
+ >>> s2 = {"eee":["http://eee"],"aaa":["http://aaa"],"bbb":["http://bbb"],"fff":["http://fff"]}
38
+
39
+ >>> dict(s2.items() - s1.items()) # 同じようには出来ない
40
+
41
+ Traceback (most recent call last):
42
+
43
+ File "<stdin>", line 1, in <module>
44
+
45
+ TypeError: unhashable type: 'list'
46
+
47
+ >>> {k:s2[k] for k in s2.keys() - s1.keys()} # keysで集合演算してから辞書内包表記で辞書を作る
48
+
49
+ {'eee': ['http://eee'], 'fff': ['http://fff']}
50
+
51
+ ```

3

追記

2019/01/27 15:57

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,4 +1,4 @@
1
- `dict.keys`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
1
+ `dict.keys`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします(ただし`items`は値がすべてhashableという条件付き`list`などが値にある場合は不可能です)。
2
2
 
3
3
 
4
4
 

2

valuesは駄目なのかな?

2019/01/27 15:46

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,4 +1,4 @@
1
- `dict.keys`, `dict.values`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
1
+ `dict.keys`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
2
2
 
3
3
 
4
4
 

1

追記

2019/01/27 15:39

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,4 +1,4 @@
1
- `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
1
+ `dict.keys`, `dict.values`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
2
2
 
3
3
 
4
4