0

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

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

4

2 回答 2

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())
于 2012-08-25T21:47:17.340 回答
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'}
于 2012-08-25T21:49:10.783 回答