Форум сайта python.su
35
dic = dict.fromkeys( ['a', 'b', 'c'], dict.fromkeys( [1, 2, 3], dict.fromkeys(['x']) ) ) for i in ['a', 'b', 'c']: for j in [1, 2, 3]: dic[i][j]['x'] = (i, j)
{'a': {1: {'x': ('c', 3)}, 2: {'x': ('c', 3)}, 3: {'x': ('c', 3)}}, 'c': {1: {'x': ('c', 3)}, 2: {'x': ('c', 3)}, 3: {'x': ('c', 3)}}, 'b': {1: {'x': ('c', 3)}, 2: {'x': ('c', 3)}, 3: {'x': ('c', 3)}} }
{'a': {1: {'x': ('a', 1)}, 2: {'x': ('a', 2)}, 3: {'x': ('a', 3)}}, ... }
Офлайн
35
dic = dict.fromkeys( ['a', 'b'], dict.fromkeys( [1, 2], dict.fromkeys(['x']) ) ) dc = {'a': {1: {'x': None}, 2: {'x': None}}, 'b': {1: {'x': None}, 2: {'x': None}}} dc == dic >>> True dic['a'][1]['x'] = 1 dc['a'][1]['x'] = 1 dic == dc >>> False print dic >>> {'a': {1: {'x': 1}, 2: {'x': 1}}, 'b': {1: {'x': 1}, 2: {'x': 1}}} print dc >>> {'a': {1: {'x': 1}, 2: {'x': None}}, 'b': {1: {'x': None}, 2: {'x': None}}}
Офлайн
1
>>> dic = dict.fromkeys(['a', 'b'], dict.fromkeys([1, 2], dict.fromkeys(['x']))) >>> dc = {'a': {1: {'x': None}, 2: {'x': None}}, 'b': {1: {'x': None}, 2: {'x': None}}} >>> id(dic['a']), id(dic['b']) (17691232, 17691232) >>> id(dc['a']), id(dc['b']) (17691112, 17663400) >>>
Офлайн
857
>>> import pprint >>> pp = pprint.pprint >>> >>> dic = {i: {j: {'x': (i, j)} for j in range(1, 4)} for i in 'abc'} >>> >>> pp(dic, width=50) {'a': {1: {'x': ('a', 1)}, 2: {'x': ('a', 2)}, 3: {'x': ('a', 3)}}, 'b': {1: {'x': ('b', 1)}, 2: {'x': ('b', 2)}, 3: {'x': ('b', 3)}}, 'c': {1: {'x': ('c', 1)}, 2: {'x': ('c', 2)}, 3: {'x': ('c', 3)}}} >>>
botinag
почему ‘x’ везде равен ('c', 3)?
>>> print(dict.fromkeys.__doc__) dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v. v defaults to None. >>>
>>> d = dict.fromkeys('ab', {}) >>> d {'b': {}, 'a': {}} >>> d['a']['e'] = 1 >>> d {'b': {'e': 1}, 'a': {'e': 1}} >>>
Отредактировано py.user.next (Апрель 17, 2014 07:02:40)
Офлайн