2016-08-05 280 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消息:TypeError: replace() takes at least 2 arguments (1 given)

我该如何解决这个问题?

+0

你可以发布你的字典吗?以及完整的代码? – ospahiu

+0

如果可能,请发布您的示例代码 –

+0

从腌制文件中读取值,这是另一个先取出的人。 Ι知道这不是一个很大的帮助,但这是我得到的一切...这是相当不好的代码... – Jack

回答

0

使用

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

你确定它的工作?如果k else“n/a”]能起作用,你是否在[['','1']中表示k [k for k]? – galaxyan

0

地图功能尝试需要FUNC和迭代

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

的值列表:

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

你或许应该只是扩展到for循环写:

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

如果你想在dict.values()中设置value ==“”else print(str(value))的值,你可以将它转换为列表理解。' –

+0

是啊是对的。谢谢。 – Camsbury

0

您可以在不使用map()的情况下以更简单的方式解决问题。只要使用list(),你就可以循环你的字符串的每个字符(diz [key]),然后用你想要的'n/a'字符串替换空的空格。

diz[key] = 'a val' 
[w.replace(' ', 'n/a') for w in list(diz[key])] 
>> ['a', 'n/a', 'v', 'a', 'l']