将带有对象的Python字典转换为带有字符串的字典

将带有对象的Python字典转换为带有字符串的字典,python,dictionary,Python,Dictionary,我有一个包含对象值和字符串键的字典: dict{ 'key1': object_1 'key2': object_2 } 我想把它转换成: dict{ 'key1': str(object_1) 'key2': str(object_2) } 其中str(object_1)是object_1的字符串表示形式。执行此转换的最简单和最具python风格的方法是什么 dict((k, str(v)) for k, v in d.iteritems()) 或者在Python2.7+中: {k: s

我有一个包含对象值和字符串键的字典:

dict{
'key1': object_1
'key2': object_2
}
我想把它转换成:

dict{
'key1': str(object_1)
'key2': str(object_2)
}
其中str(object_1)是object_1的字符串表示形式。执行此转换的最简单和最具python风格的方法是什么

dict((k, str(v)) for k, v in d.iteritems())
或者在Python2.7+中:

{k: str(v) for k, v in d.items()}
对于更复杂的DICT(对象元组作为值):


使用字典理解:

{ k : str(v) for k, v in d.iteritems() }
上述内容将在Python2.7+中使用,它将使用生成器生成新词典。对于Python3,其工作原理类似:

{ k : str(v) for k, v in d.items() }

eurimo所说的,或者如果您不想复制:

for k in d:
   d[k] = str(d[k])

下面的Python for循环应该可以解决您的问题

for item in d.keys():
   d[item]=str(d[item])

您也可以使用此功能来实现它,而无需为字典使用任何内置方法:


x={z:str(x[z])表示x}

我不得不做一些类似于你的问题的事情,但我认为我的解决方案有点长

new_dict=dict([(item[0],str(item[1])) for item in d.items()])

希望这有帮助

好的,对于更多的嵌套计算是否也有类似的语法?例如,要将key1=>array(object,object)转换为key1=>array(string,string)?@Dejwi-是的,您可以根据需要转换各个值。Dejwi,如果您只有一个嵌套级别,只需在上面的代码中使用[str(o)For o in objects]。@eumiro我想您也可以在这里使用repr()。
iteritems
在3中不存在,但是,除非您使用
(非惰性版本),否则同一代码不会同时在这两种情况下运行。
new_dict=dict([(item[0],str(item[1])) for item in d.items()])