d = {'a': 1, 'b': 2}
d.clear()
assert d == {}
d = {}
d.clear()
assert d == {}
d = {'a': 1, 'b': 2}
copy = d.copy()
assert copy == {'a': 1, 'b': 2}
assert copy is not d
d['c'] = 3
assert 'c' not in copy
d = {}
copy = d.copy()
assert copy == {}
d = {'a': 1}
d.update({'b': 2})
assert d == {'a': 1, 'b': 2}
d = {'a': 1}
d.update({'a': 10})
assert d == {'a': 10}
d = {'a': 1}
d.update()
assert d == {'a': 1}
d = {}
d.update([('a', 1), ('b', 2)])
assert d == {'a': 1, 'b': 2}
d = {'a': 1}
result = d.setdefault('a', 10)
assert result == 1
assert d == {'a': 1}
d = {'a': 1}
result = d.setdefault('b', 2)
assert result == 2
assert d == {'a': 1, 'b': 2}
d = {'a': 1}
result = d.setdefault('b')
assert result is None
assert d == {'a': 1, 'b': None}
d = {'a': 1, 'b': 2}
item = d.popitem()
assert item == ('b', 2)
assert d == {'a': 1}
d = {'x': 10}
item = d.popitem()
assert item == ('x', 10)
assert d == {}
d = dict.fromkeys(['a', 'b', 'c'])
assert d == {'a': None, 'b': None, 'c': None}
d = dict.fromkeys(['a', 'b'], 0)
assert d == {'a': 0, 'b': 0}
d = dict.fromkeys([])
assert d == {}
d = dict.fromkeys('abc')
assert d == {'a': None, 'b': None, 'c': None}
d = dict.fromkeys(range(3), 'x')
assert d == {0: 'x', 1: 'x', 2: 'x'}
d = dict.fromkeys((1, 2, 3), [])
assert d[1] is d[2] and d[2] is d[3], 'fromkeys shares same value object for all keys'
d = dict.fromkeys(['a', 'b', 'a'], 1)
assert d == {'a': 1, 'b': 1}
assert list(d.keys()) == ['a', 'b']
d = {}.fromkeys(['a', 'b'])
assert d == {'a': None, 'b': None}
d = {'x': 1}.fromkeys(['a', 'b'], 0)
assert d == {'a': 0, 'b': 0}
d = {'a': 1}
d.update(b=2)
assert d == {'a': 1, 'b': 2}
d = {'a': 1}
d.update(b=2, c=3)
assert d == {'a': 1, 'b': 2, 'c': 3}
d = {'a': 1}
d.update(a=10)
assert d == {'a': 10}
d = {}
d.update(a=1, b=2)
assert d == {'a': 1, 'b': 2}
d = {'a': 1}
d.update({'b': 2}, c=3)
assert d == {'a': 1, 'b': 2, 'c': 3}
d = {'a': 1}
d.update({'b': 2}, b=20)
assert d == {'a': 1, 'b': 20}
d = {}
d.update([('a', 1)], b=2)
assert d == {'a': 1, 'b': 2}
runtime_key = 'zzz' + 'qqq'
d = dict(**{runtime_key: 1})
assert d == {'zzzqqq': 1}
d.update(**{runtime_key: 2})
assert d == {'zzzqqq': 2}
try:
dict.nonexistent()
assert False, 'should raise AttributeError'
except AttributeError as e:
msg = str(e)
assert 'dict' in msg, f'error should mention dict, got: {e}'
assert 'nonexistent' in msg, f'error should mention method name, got: {e}'
try:
d = {}
d.update([('a', 1), 'x', ('c', 3)]) assert False, 'should raise ValueError'
except (ValueError, TypeError) as e:
msg = str(e)
assert 'length' in msg.lower(), f'error should mention length, got: {e}'