如何为内部字典键创建一个新列表或集合对象,以便不重复更新同一个对象?
How to create a new list or set object for an inner dictionary key so that the same object is not repeatedly being updated?
我正在尝试创建一个内部字典,其值存储在列表或集合对象中(在此示例中使用集合)。
t = [('Jobs', set()), ('Titles', set())]
inn_d = lambda: dict(t)
并创建默认字典并将 inn_d
传递给它。
d = defaultdict(inn_d)
为 d
和外键创建条目时,每个内键的两个值都会更新。
d['A']['Jobs'].add('Cook')
d['B']['Titles'].add('President')
d
defaultdict(<function <lambda> at 0x0000016691157DC0>, {'A': {'Jobs': {'Cook'}, 'Titles': {'President'}}, 'B': {'Jobs': {'Cook'}, 'Titles': {'President'}}})
什么时候应该
defaultdict(<function <lambda> at 0x0000016691157DC0>, {'A': {'Jobs': {'Cook'}, 'Titles': set()}, 'B': {'Jobs': set(), 'Titles': {'President'}}})
我知道正在调用 Jobs
和 Titles
的同一个集合对象 - 我不确定在创建内部字典时如何创建新的集合对象。
感谢您的帮助。
像这样每次创建一个新的:
def inn_d():
return {'Jobs': set(), 'Titles': set()}
我正在尝试创建一个内部字典,其值存储在列表或集合对象中(在此示例中使用集合)。
t = [('Jobs', set()), ('Titles', set())]
inn_d = lambda: dict(t)
并创建默认字典并将 inn_d
传递给它。
d = defaultdict(inn_d)
为 d
和外键创建条目时,每个内键的两个值都会更新。
d['A']['Jobs'].add('Cook')
d['B']['Titles'].add('President')
d
defaultdict(<function <lambda> at 0x0000016691157DC0>, {'A': {'Jobs': {'Cook'}, 'Titles': {'President'}}, 'B': {'Jobs': {'Cook'}, 'Titles': {'President'}}})
什么时候应该
defaultdict(<function <lambda> at 0x0000016691157DC0>, {'A': {'Jobs': {'Cook'}, 'Titles': set()}, 'B': {'Jobs': set(), 'Titles': {'President'}}})
我知道正在调用 Jobs
和 Titles
的同一个集合对象 - 我不确定在创建内部字典时如何创建新的集合对象。
感谢您的帮助。
像这样每次创建一个新的:
def inn_d():
return {'Jobs': set(), 'Titles': set()}