2016-08-05 13 views
0

まず、他の人のコードを修正しています。辞書の空の値を置き換えますpython

私はそうのような keyに対応した辞書の値を印刷しようとしている

print (map(str, dict[key]))

すべてが正常に動作しますが、ちょうど二重引用符で印刷されているいくつかのフィールドがあり、同様にそう['some_value', '', 'other_value', etc...]、私はここで達成しようとしているものを、最初に、n/a

私のアプローチで、単一引用符''交換することで、これを行うことだった:print (map(str.replace("\'\'", "n/a"), dict[key]))を、私はTypeErrorメッセージを取得:を

どうすれば対処できますか?

data = { 'a' :[1,'',2]} 
print (map(lambda x: str(x) if x else 'n/a', data['a'])) 
['1', 'n/a', '2'] 
+0

あなたは辞書を投稿できますか?フルコードと同様に? – ospahiu

+0

可能であれば、サンプルコード –

+0

を掲示してください。値はpickleされたファイルから読み込まれます。 Ιそれは大した助けではないことを知っていますが、これは私が持っているすべてです...それはかなり書かれたコードです... – Jack

答えて

0

print([k if k else "n/a" for k in map(str, dict[key])]) 
+0

あなたはそれが動作すると確信していますか? k else "n/a"]がうまくいけば[[''、 '1']でkのkを言っていますか? – galaxyan

0

マップ機能がリストとして値のために、FUNCと反復可能

data = { '':'',1:'a'} 
print (map(lambda x: x if x else 'n/a', data.values())) 
['n/a', 'a'] 

を必要とする使用してみてください

for value in dict.values(): 
    if value == "": 
     print("n/a") 
    else: 
     print(str(value)) 
0

あなたはおそらくちょうどループと書き込みのために展開する必要があります:

+0

dict.values()の値のelse print(str(value)) ' –

+0

うん、もしあなたがこれをリスト内包に変換することができます。そうです。ありがとう。 – Camsbury

0

map()を使用しないと、より簡単な方法で問題を解決できます。文字列(diz [key])のすべての文字をループし、空のスペースを 'n/a'文字列で置き換えるよりもlist()を使用するだけです。

diz[key] = 'a val' 
[w.replace(' ', 'n/a') for w in list(diz[key])] 
>> ['a', 'n/a', 'v', 'a', 'l'] 
関連する問題