Python中向列表添加函数后出现函数对象而非字典的原因解析
向列表添加函数后出现
<function ...>而非预期字典的原因及解决方法 问题原因
你看到的<function add_new_country at 0x7fefd60e8310>是Python对函数对象的字符串表示,出现这个结果的核心原因是:
- 直接写
travel_log.append(add_new_country)时,你并没有执行函数生成字典,而是把add_new_country这个函数本身当作一个对象添加到了列表里。Python中函数也是一种对象,打印时就会输出这种包含内存地址的标识。 - 另外你原本的函数逻辑也不符合需求:它没有创建目标格式的字典,而是把
country、visits、cities三个独立值分别追加到列表,会导致travel_log变成混合字典和单个值的混乱结构。
正确实现方式
要实现向travel_log添加新字典的需求,需要先在函数内部构造符合现有格式的字典,再将这个字典追加到列表:
travel_log = [ { "country": "France", "visits": 12, "cities": ["Paris", "Lille", "Dijon"] }, { "country": "Germany", "visits": 5, "cities": ["Berlin", "Hamburg", "Stuttgart"] }, ] def add_new_country(country, visits, cities): # 构造和现有列表元素格式一致的新字典 new_entry = { "country": country, "visits": visits, "cities": cities } travel_log.append(new_entry) add_new_country("Russia", 2, ["Moscow", "Saint Petersburg"]) print(travel_log)
效果说明
执行上述代码后,travel_log的最后一项会是{"country": "Russia", "visits": 2, "cities": ["Moscow", "Saint Petersburg"]},完全符合你期望的存储字典的列表结构。
内容的提问来源于stack exchange,提问作者SolidOpt
相关产品推荐
相关产品推荐

