オブジェクト値と文字列キーを含む辞書があります。
dict{
'key1': object_1
'key2': object_2
}
そして、私はそれを次のように変換したいと思います:
dict{
'key1': str(object_1)
'key2': str(object_2)
}
str(object_1) は object_1 の文字列表現です。この変換を実行する最も単純で最もpythonicな方法は何ですか?
オブジェクト値と文字列キーを含む辞書があります。
dict{
'key1': object_1
'key2': object_2
}
そして、私はそれを次のように変換したいと思います:
dict{
'key1': str(object_1)
'key2': str(object_2)
}
str(object_1) は object_1 の文字列表現です。この変換を実行する最も単純で最もpythonicな方法は何ですか?
dict((k, str(v)) for k, v in d.iteritems())
または Python2.7+ の場合:
{k: str(v) for k, v in d.items()}
より複雑な dict の場合 (オブジェクトのタプルを値として使用):
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()}
eurimo が言ったこと、またはコピーを作成したくない場合:
for k in d:
d[k] = str(d[k])
辞書内包表記の使用:
{ k : str(v) for k, v in d.iteritems() }
上記は Python 2.7 以降で機能し、ジェネレーターを使用して新しい辞書を生成します。Python 3 の場合、これは同様に機能します。
{ k : str(v) for k, v in d.items() }
次の Python for ループで問題が解決するはずです。
for item in d.keys():
d[item]=str(d[item])
これを使用して、辞書の組み込みメソッドを使用せずにそれを実現することもできます。
x={ z : str(x[z]) for z in x }
あなたの質問と同様のことをしなければなりませんでしたが、私の解決策は少し長いと思います。
new_dict=dict([(item[0],str(item[1])) for item in d.items()])
お役に立てれば