Python列表追加字典异常:仅添加字典键而非完整字典
问题修复:向列表追加字典而非字典键
你的代码问题出在gamers_list += {...}这一行:当对列表使用+=操作符时,右侧的可迭代对象(这里是字典)会被拆解为单个元素(字典的键)逐个添加到列表中,所以最终输出的是字典的键列表。
修复方案1:使用append()方法直接追加字典
append()方法会把传入的整个对象作为单个元素添加到列表末尾,正好符合你的需求:
def add_gamer(gamer, gamers_list): if 'name' in gamer and 'availability' in gamer: gamers_list.append({'name': gamer['name'], 'availability': gamer['availability']}) return gamers_list gamers = [] kimberly = {'name': 'Kimberley', 'availability': ['Mondays', 'Tuesady', 'Fridays']} print(add_gamer(kimberly, gamers))
修复方案2:将字典包裹在列表中再用+=
如果坚持使用+=,需要把字典放到一个列表里,这样+=会把整个字典作为单个元素添加:
def add_gamer(gamer, gamers_list): if 'name' in gamer and 'availability' in gamer: gamers_list += [{'name': gamer['name'], 'availability': gamer['availability']}] return gamers_list gamers = [] kimberly = {'name': 'Kimberley', 'availability': ['Mondays', 'Tuesady', 'Fridays']} print(add_gamer(kimberly, gamers))
两种方案运行后都会输出你期望的结果:
[{'name': 'Kimberley', 'availability': ['Mondays', 'Tuesady', 'Fridays']}]
内容的提问来源于stack exchange,提问作者Ngelakanyo
相关产品推荐
相关产品推荐

