在Python中,循环遍历dict并将list或dict的所有值设置为string

In Python, loop through a dict and set all values of list or dict to string

我有一个字典"元数据",它包含字符串、列表、字典和整数的键值对。如何循环访问此字典并将所有非字符串或整数类型的值转换为字符串?

是否有任何方法可以同时删除值为空的键?如何在不添加附加循环的情况下完成此操作?


使用isinstance检查值的类型。在Python3中,您可以简单地编写:

1
{k:v if isinstance(v, (str, int)) else str(v) for k,v in dct.items() if k != ''}

在旧的Python版本中,必须注意没有字典理解(<2.7),并且有多个类型可以是内置的int和string(<3)。如果在谈论字符串时是指字符串,则2.5-2.7等效值将是

1
2
dict((k, v if isinstance(v, (unicode, int, long)) else unicode(v))
     for k,v in dct.iteritems())


这工作:

1
2
d={'l':[1,2,3],'s':'abc','i':5,'f':1.23,'di':{1:'one',2:'two'},'emty':''}
{k:v if type(v) in (str,int, long,unicode) else repr(v) for k,v in d.items() if v!=''}

印刷品:

1
{'i': 5, 's': 'abc', 'di':"{1: 'one', 2: 'two'}", 'l': '[1, 2, 3]', 'f': '1.23'}