我有一个字典“元数据”,其中包含字符串,列表,字符串和整数的键值对。如何遍历此字典并将所有非字符串或整数类型的值转换为字符串?
有没有办法同时删除值为空的键?如果不添加额外的循环,我怎么能这样做?
答案 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'}