我正在初始化这样的序列
seq = {'a', 'b', 'c', 'd', 'e'}
Run Code Online (Sandbox Code Playgroud)
现在我使用 fromkeys() 将序列转换为集合字典。这就是我正在做的事情:
val = set()
seq_dict = dict.fromkeys(seq, val)
Run Code Online (Sandbox Code Playgroud)
现在看来,如果仅将一个元素添加到我的字典键集中之一,则该元素将被添加到所有其他集合中。这是示例:
seq_dict['a'].add("val1")
print(seq_dict)
{'d': {'val1'}, 'c': {'val1'}, 'b': {'val1'}, 'a': {'val1'}, 'e': {'val1'}}
Run Code Online (Sandbox Code Playgroud)
不确定我是否以正确的方式使用 fromkeys ?
该fromkeys
方法按预期工作,因为您得到了正确的结果:一个字典,其键是中的字符seq
变量中的字符,每个值都是空集。
您的问题是由于您分配的值的可变性造成的:您为所有关键字分配了一个空集作为值。如果更改此 ( seq_dict['a'].add("val1")
),则所有关键字的值都会更改(每个关键字引用原始空集)。
您可能需要使用字典理解(为每个键创建空集的新的不同副本)来避免此问题:
seq = {'a', 'b', 'c', 'd', 'e'}
seq_dict = {key: set() for key in seq}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
724 次 |
最近记录: |