In [1]:
d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 2, 'c': 4, 'd': 5}

In [2]:
print(list(d1.keys()))


['a', 'b', 'c']

In [3]:
print(type(d1.keys()))


<class 'dict_keys'>

In [4]:
print(list(d1.items()))


[('a', 1), ('b', 2), ('c', 3)]

In [5]:
print(type(d1.items()))


<class 'dict_items'>

In [6]:
intersection_keys = d1.keys() & d2.keys()
print(intersection_keys)


{'c', 'b'}

In [7]:
print(type(intersection_keys))


<class 'set'>

In [8]:
intersection_items = d1.items() & d2.items()
print(intersection_items)


{('b', 2)}

In [9]:
intersection_dict = dict(d1.items() & d2.items())
print(intersection_dict)


{'b': 2}

In [10]:
print(type(intersection_dict))


<class 'dict'>

In [11]:
union_keys = d1.keys() | d2.keys()
print(union_keys)


{'d', 'a', 'b', 'c'}

In [12]:
union_items = d1.items() | d2.items()
print(union_items)


{('d', 5), ('c', 4), ('a', 1), ('b', 2), ('c', 3)}

In [13]:
union_dict = dict(d1.items() | d2.items())
print(union_dict)


{'d': 5, 'c': 3, 'a': 1, 'b': 2}

In [14]:
symmetric_difference_keys = d1.keys() ^ d2.keys()
print(symmetric_difference_keys)


{'d', 'a'}

In [15]:
symmetric_difference_items = d1.items() ^ d2.items()
print(symmetric_difference_items)


{('d', 5), ('c', 4), ('a', 1), ('c', 3)}

In [16]:
symmetric_difference_dict = dict(d1.items() ^ d2.items())
print(symmetric_difference_dict)


{'d': 5, 'c': 3, 'a': 1}

In [17]:
difference_keys = d1.keys() - d2.keys()
print(difference_keys)


{'a'}

In [18]:
difference_items = d1.items() - d2.items()
print(difference_items)


{('c', 3), ('a', 1)}

In [19]:
difference_dict = dict(d1.items() - d2.items())
print(difference_dict)


{'c': 3, 'a': 1}