You need to enable JavaScript to run this app. Python中如何将字典列表中的字典逐个返回给其他函数调用?
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将字典列表中的字典逐个返回给其他函数调用?

解决方案

return语句一旦执行就会直接终止整个函数的运行,所以第一次循环拿到第一个字典后函数就直接退出,自然无法返回后续元素。要实现逐个返回元素的需求,使用Python的生成器即可,只需要把return替换为yield关键字。

额外提示:你定义的字典里存在重复的Status键,Python字典中重复的键会以最后出现的赋值为准,前面的Status: None会被后面的Status: 'NOT'覆盖,如果你是故意这么写的可以忽略。另外注意代码里的F和DONE属于自定义常量,使用前需要提前定义,比如F = False、DONE = "DONE"。

修改后的完整代码

# 提前定义常量,避免运行报错
F = False
DONE = "DONE"

def data():
    iData = [{'Details': [], 'age': None, 'his': F, 'Clear': None,
              'Computed': None, 'impact': 0,
              'Status': None, 'ID': None, 'bel': None,
              'Object': None, 'TicketId': 123, 'service': 257,
              'Status': 'NOT', 'Name': 'xyz'}, 
              
              {'Details': [], 'age': 56, 'his': F, 
               'Clear': DONE,
              'Computed': None, 'impact': 234,
              'Status': None, 'ID': None, 'bel': None,
              'Object': None, 'TicketId': 456, 'service': 650,
              'Status': 'NOT', 'Name': 'xyz'}]

    for i in iData:
        # 用yield替代return,把函数变成生成器,逐个返回元素
        yield i

def return_data():
    # 生成器是可迭代对象,直接遍历就能逐个拿到每个字典
    for i in data():
        # 这里可以对每个字典执行你需要的自定义操作
        print("returned i", i)

if __name__ == '__main__':
    return_data()

原理说明

  • yield关键字会把普通函数变成生成器函数,调用生成器函数会返回一个迭代器,每次迭代的时候会执行到yield位置返回对应的值,暂停函数执行,下次迭代的时候从暂停的位置继续执行,直到所有元素都返回完毕。
  • 你也可以直接把整个列表返回后在return_data里遍历,但是用生成器的优势是不需要一次性把所有数据加载到内存,数据量很大的时候内存效率更高。

内容的提问来源于stack exchange,提问作者P.Jhon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 22:36:08