我有一套
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
给 istelf 使用
codes = codes | {c for c in codes}
但这也不起作用。我对字典比较陌生,所以如果答案就在我眼前,请原谅我。
dict.fromkeys()
不采用值的表达式;你会得到一个包含所有相同值的字典(从技术上讲,所有值都是对一个对象的引用,在键之间共享)。
你的循环刚刚创建的每一个全新的字典code
中codes
集,每个取代以前的对象code_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'}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句