简体   繁体   English

不要为字典中没有值的键打印 None

[英]Not to print None for keys without values in a dictionary

A dictionary was created with keys.字典是用键创建的。 Later some of the keys got values updated.后来一些键更新了值。

When printing the keys in a For loop, the keys without values, prints None.在 For 循环中打印键时,没有值的键打印 None。

ma_dict = dict.fromkeys(["David","Mike","Kate","Lilly"])
ma_dict.update({"David" : "Front", "Mike" : "Middle"})

for each in ["David","Mike","Kate","Lilly"]:
    print (each, ma_dict[each])

It prints:它打印:

David Front
Mike Middle
Kate None
Lilly None

What is the way not to print the None?不打印 None 的方法是什么? Thank you.谢谢你。

# outputs wanted
David Front
Mike Middle
Kate 
Lilly 

Not to use an If statement, such as:不使用 If 语句,例如:

ma_dict = dict.fromkeys(["David","Mike","Kate","Lilly"])
ma_dict.update({"David" : "Front", "Mike" : "Middle"})

for each in ["David","Mike","Kate","Lilly"]:
    if ma_dict[each] != None:
        print (each, ma_dict[each])
    else:
        print (each)

If it's just for printing, you might consider using a dictionary comprehension to replace None with empty strings:如果只是为了打印,您可以考虑使用字典理解将None替换为空字符串:

d = {k: ma_dict[k] if ma_dict[k] is not None else "" for k in ma_dict}
for k in d:
    print(k, d[k])
David Front
Mike Middle
Kate 
Lilly

Inspired by @masasa:灵感来自@masasa:

from collections import defaultdict

ma_dict = defaultdict(str)
ma_dict.update({"David" : "Front", "Mike" : "Middle"})

for each in ["David","Mike","Kate","Lilly"]:
    print (each, ma_dict[each])

It prints:它打印:

David Front
Mike Middle
Kate 
Lilly 

I think using if is appriopate here, but if you must Not to use an If statement AT ANY PRICE then do我认为在这里使用if是合适的,但是如果您必须不以任何价格使用 If 语句,那么请执行

ma_dict = dict.fromkeys(["David","Mike","Kate","Lilly"])
ma_dict.update({"David" : "Front", "Mike" : "Middle"})
for each in ["David","Mike","Kate","Lilly"]:
    print(each, [ma_dict[each],""][ma_dict[each] is None])

output输出

David Front
Mike Middle
Kate
Lilly

Since you don't want to use an if condition and As @masasa has suggested, You could use a defaultdict .由于您不想使用if条件并且正如@masasa 所建议的那样,您可以使用defaultdict

from collections import defaultdict
ma_dict = defaultdict.fromkeys(["David","Mike","Kate","Lilly"], '')
ma_dict.update({"David" : "Front", "Mike" : "Middle"})
for each in ["David","Mike","Kate","Lilly"]:
    print (each, ma_dict.get(each))
David Front
Mike Middle
Kate 
Lilly 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM