如何仅为一个键更新字典中的集合?(Python)

如何仅为一个键更新字典中的集合?(Python),python,dictionary,set,Python,Dictionary,Set,我很难看出我的错误。我试图一次只更新字典中一个特定键的值集,但每个键都在更新 final_df = dict.fromkeys({'a','b','c'}, {'1'}) final_df['a'].update({'1','2'}) final_df 实际产量: {'b':{'1','2'},'a':{'1','2'},'c':{'1','2'} 期望输出: {'a':{'1','2'},'b':{'1'},'c':{'1'} 还尝试: final_df = dict.fromkeys({'

我很难看出我的错误。我试图一次只更新字典中一个特定键的值集,但每个键都在更新

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'].update({'1','2'})
final_df
实际产量: {'b':{'1','2'},'a':{'1','2'},'c':{'1','2'}

期望输出: {'a':{'1','2'},'b':{'1'},'c':{'1'}

还尝试:

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'] = final_df['a'].update({'1','2'})
final_df

而不是
.update
只需分配:

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'] = {'1','2'}
print(final_df)

而不是
.update
只需分配:

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'] = {'1','2'}
print(final_df)

看来我需要的是联合而不是更新

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'] = final_df['a'].union({'2'})
final_df
输出:

{'b': {'1'}, 'a': {'1', '2'}, 'c': {'1'}}

看来我需要的是联合而不是更新

final_df = dict.fromkeys({'a','b','c'}, {'1'})
final_df['a'] = final_df['a'].union({'2'})
final_df
输出:

{'b': {'1'}, 'a': {'1', '2'}, 'c': {'1'}}

这是一个简单的错误。您在这里生产的产品:

final_df = dict.fromkeys({'a','b','c'}, {'1'})
是一个字典,其键
a
b
c
都映射到同一集合对象
{1'}
。然后,所有后续的突变都像你做的那样:

final_df['a'].update({'1','2'})
将变异所有映射,因为它们都指向同一集合对象

为了解决这个问题,可以考虑字典理解,它将为每个键复制set对象:

>>> final_df = {k:{'1'} for k in {'a','b','c'}}
>>> final_df
{'c': {'1'}, 'a': {'1'}, 'b': {'1'}}
>>> final_df['a'].update({'2','3'})
>>> final_df
{'c': {'1'}, 'a': {'1', '3', '2'}, 'b': {'1'}}

这是一个简单的错误。您在这里生产的产品:

final_df = dict.fromkeys({'a','b','c'}, {'1'})
是一个字典,其键
a
b
c
都映射到同一集合对象
{1'}
。然后,所有后续的突变都像你做的那样:

final_df['a'].update({'1','2'})
将变异所有映射,因为它们都指向同一集合对象

为了解决这个问题,可以考虑字典理解,它将为每个键复制set对象:

>>> final_df = {k:{'1'} for k in {'a','b','c'}}
>>> final_df
{'c': {'1'}, 'a': {'1'}, 'b': {'1'}}
>>> final_df['a'].update({'2','3'})
>>> final_df
{'c': {'1'}, 'a': {'1', '3', '2'}, 'b': {'1'}}

这是一个来自更大数据集的简化版本。如果我需要用一个更新的集合更新1个键的值,我如何才能对一个特定的键进行更新?这是一个来自更大数据集的简化版本。如果我需要用更新的集合更新1个键的值,我如何才能对特定键进行更新?不一定。。。您在这里所做的真正区别在于,您正在对键进行赋值:
final_df['a']=…
union也与更新显著不同。它可能不会在任何情况下都给你你想要的行为…不一定。。。您在这里所做的真正区别在于,您正在对键进行赋值:
final_df['a']=…
union也与更新显著不同。它可能不会在任何情况下都给你你想要的行为。。。