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

时间:2012-08-25 21:32:04

标签: python list loops dictionary

我有一个字典“元数据”,其中包含字符串,列表,字符串和整数的键值对。如何遍历此字典并将所有非字符串或整数类型的值转换为字符串?

有没有办法同时删除值为空的键?如果不添加额外的循环,我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

使用isinstance检查值的类型。在Python 3中,您只需编写:

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

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

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

答案 1 :(得分:1)

这有效:

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!=''} 

打印:

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