如何向Python字典添加键值对且避免打印输出None?
问题原因
你定义的add_contact函数没有显式设置返回值,Python中所有未写return语句的函数,默认都会返回None,你直接对函数调用结果执行print操作,自然会输出None。
另外字典属于可变对象,你在函数内修改传入的contacts字典时,会直接修改原字典对象,所以后续单独打印原字典可以看到新增的键值对。
解决方案
方案1:调用函数后单独打印字典
不需要打印函数的返回结果,先执行新增联系人逻辑,再单独打印更新后的字典即可,这也是最符合常规写法的方案:
contacts = {'John Smith': '1-123-123-123', 'Jane Smith': '1-102-555-5678', 'John Doe': '1-103-555-9012'} def add_contact(contacts, name, number): """ Add a new contact (name, number) to the contacts list. """ if name in contacts: print(name, "is already in contacts list!") else: contacts[name] = number # 直接调用函数执行新增逻辑,不要套print add_contact(contacts, 'new_guy', '1234') # 单独打印更新后的字典 print(contacts)
方案2:给函数添加返回值
如果你希望调用函数后直接拿到更新后的字典,可以在函数末尾添加return语句返回更新后的联系人字典:
contacts = {'John Smith': '1-123-123-123', 'Jane Smith': '1-102-555-5678', 'John Doe': '1-103-555-9012'} def add_contact(contacts, name, number): """ Add a new contact (name, number) to the contacts list. """ if name in contacts: print(name, "is already in contacts list!") else: contacts[name] = number # 新增返回语句,返回更新后的字典 return contacts # 此时打印函数返回值就会输出更新后的字典,不会出现None print(add_contact(contacts, 'new_guy', '1234'))
常规场景更推荐使用方案1,修改可变入参的函数默认不需要返回修改后的对象,代码可读性更高。
内容的提问来源于stack exchange,提问作者user17011190
相关产品推荐
相关产品推荐

