Python 将值附加到集合中的键
我有一套Python 将值附加到集合中的键,python,dictionary,Python,Dictionary,我有一套 codes = {'Code1', 'Code2', 'Code3'} 我希望最终得到一个具有以下输出的字典 code_dict = {'Code1': 'Input_Code1', 'Code2': 'Input_Code2', 'Code3': 'Input_Code3'} 我试过使用dict.fromkeys(),但我的输出完全混乱了 for code in codes: code_dict = dict.fromkeys(codes, "Input_" + code
codes = {'Code1', 'Code2', 'Code3'}
我希望最终得到一个具有以下输出的字典
code_dict = {'Code1': 'Input_Code1', 'Code2': 'Input_Code2', 'Code3': 'Input_Code3'}
我试过使用dict.fromkeys()
,但我的输出完全混乱了
for code in codes:
code_dict = dict.fromkeys(codes, "Input_" + code)
我还尝试使用
codes = codes | {c for c in codes}
但这也不起作用。我对字典比较陌生,所以如果答案就在我眼前,请原谅。dict.fromkeys()
不接受值的表达式;您将得到一个具有所有相同值的字典(从技术上讲,所有值都是对一个对象的引用,在键之间共享)
您的循环刚刚为code
集中的每个code
创建了一个全新的字典,每个字典都替换了以前绑定到的对象code\u dict
。最后,您将拥有一个字典,其中所有键都设置为相同的值,其中该值基于无序集中在迭代时最后生成的任何元素
如果需要生成不同的值,请使用dict理解:
code_dict = {code: "Input_" + code for code in codes}
字典理解为循环的每次迭代在左侧执行两个表达式,一个生成键(code
,对于上面的示例),另一个用于值(这里是字符串文本和code
的串联)
正确使用dict.fromkeys()
和词典理解的演示:
>>> codes = {'Code1', 'Code2', 'Code3'}
>>> dict.fromkeys(codes, 'The same value for all keys')
{'Code3': 'The same value for all keys', 'Code1': 'The same value for all keys', 'Code2': 'The same value for all keys'}
>>> {code: "Input_" + code for code in codes}
{'Code3': 'Input_Code3', 'Code1': 'Input_Code1', 'Code2': 'Input_Code2'}
dict.fromkeys()
不接受值的表达式;您将得到一个具有所有相同值的字典(从技术上讲,所有值都是对一个对象的引用,在键之间共享)
您的循环刚刚为code
集中的每个code
创建了一个全新的字典,每个字典都替换了以前绑定到的对象code\u dict
。最后,您将拥有一个字典,其中所有键都设置为相同的值,其中该值基于无序集中在迭代时最后生成的任何元素
如果需要生成不同的值,请使用dict理解:
code_dict = {code: "Input_" + code for code in codes}
字典理解为循环的每次迭代在左侧执行两个表达式,一个生成键(code
,对于上面的示例),另一个用于值(这里是字符串文本和code
的串联)
正确使用dict.fromkeys()
和词典理解的演示:
>>> codes = {'Code1', 'Code2', 'Code3'}
>>> dict.fromkeys(codes, 'The same value for all keys')
{'Code3': 'The same value for all keys', 'Code1': 'The same value for all keys', 'Code2': 'The same value for all keys'}
>>> {code: "Input_" + code for code in codes}
{'Code3': 'Input_Code3', 'Code1': 'Input_Code1', 'Code2': 'Input_Code2'}
令人惊叹的!有什么办法可以绕过
“不可损坏类型:'set'”
错误?我的集合直接来自codes=set(codedvalues)
@ATCH\u:你想在那里把整个集合用作键吗?检查您的实现中没有将code
和code
混在一起。我确实把它混在一起了。非常感谢你的帮助!令人惊叹的!有什么办法可以绕过“不可损坏类型:'set'”
错误?我的集合直接来自codes=set(codedvalues)
@ATCH\u:你想在那里把整个集合用作键吗?检查您的实现中没有将code
和code
混在一起。我确实把它混在一起了。非常感谢你的帮助!