3

我有带有对象值和字符串键的字典:

dict{
'key1': object_1
'key2': object_2
}

我想把它转换成:

dict{
'key1': str(object_1)
'key2': str(object_2)
}

其中 str(object_1) 是 object_1 的字符串表示形式。执行此转换的最简单和最 Pythonic 的方式是什么?

4

6 回答 6

10
dict((k, str(v)) for k, v in d.iteritems())

或在 Python2.7+ 中:

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

对于更复杂的字典(以对象元组作为值):

dict((k, tuple(str(x) for x in v)) for k, v in d.iteritems())

{k: tuple(str(x) for x in v) for k, v in d.items()}
于 2012-05-21T14:31:48.247 回答
3

eurimo 说了什么,或者如果您不想复制:

for k in d:
   d[k] = str(d[k])
于 2012-05-21T14:34:02.580 回答
2

使用字典推导:

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

以上将在 Python 2.7+ 中工作,它将使用生成器生成新字典。对于 Python 3,这将类似地工作:

{ k : str(v) for k, v in d.items() }
于 2012-05-21T14:33:47.090 回答
1

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

for item in d.keys():
   d[item]=str(d[item])
于 2012-05-21T14:34:12.987 回答
1

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

x={ z : str(x[z]) for z in x }

于 2012-05-21T15:54:58.657 回答
0

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

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

希望这可以帮助

于 2012-05-21T17:20:47.217 回答