回答編集履歴
4
追記
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
追記
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は駄目なのかな?
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`dict.keys`,
|
1
|
+
`dict.keys`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
|
2
2
|
|
3
3
|
|
4
4
|
|
1
追記
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
|
1
|
+
`dict.keys`, `dict.values`, `dict.items`で取得できる辞書ビューオブジェクトは集合演算をサポートします。
|
2
2
|
|
3
3
|
|
4
4
|
|