文字列、リスト、辞書、整数のキーと値のペアを含む辞書「メタデータ」があります。このディクショナリをループして、文字列型または整数型ではないすべての値を文字列に変換するにはどうすればよいですか?
値が空のキーを同時に削除する方法はありますか?ループを追加せずにこれを行うにはどうすればよいですか?
文字列、リスト、辞書、整数のキーと値のペアを含む辞書「メタデータ」があります。このディクショナリをループして、文字列型または整数型ではないすべての値を文字列に変換するにはどうすればよいですか?
値が空のキーを同時に削除する方法はありますか?ループを追加せずにこれを行うにはどうすればよいですか?
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 および string (<3) である可能性のある型が複数あることに注意する必要があります。文字列について話すときに文字列を意味する場合、2.5-2.7 に相当するものは次のようになります。
dict((k, v if isinstance(v, (unicode, int, long)) else unicode(v))
for k,v in dct.iteritems())
これは機能します:
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'}