You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

联邦学习convert_to_client_data调用OrderedDict报TypeError排查

错误产生原因

collections.OrderedDict构造函数的位置参数规则为:最多接收1个位置参数,且该参数必须是由(key, value)格式键值对组成的可迭代对象(比如键值对元组构成的列表、普通字典实例等)。
出错代码data = collections.OrderedDict('data', distributed_data[i])直接向构造函数传入了2个独立位置参数:第一个参数为字符串'data',第二个参数为分发给客户端的数据集distributed_data[i],不符合参数传入规则,因此触发TypeError: expected at most 1 arguments, got 2报错。

修复方案

你可以任选以下三种合法写法替换出错语句,即可生成符合要求的OrderedDict格式数据条目:

  • 写法1:传入键值对列表作为唯一位置参数,兼容性最好
    data = collections.OrderedDict([('data', distributed_data[i])])
    
  • 写法2:先初始化空OrderedDict,再通过键赋值写入数据,逻辑最直观
    data = collections.OrderedDict()
    data['data'] = distributed_data[i]
    
  • 写法3:通过关键字参数传入键值对,写法最简洁(要求键名符合Python标识符命名规则,此处data键名满足要求)
    data = collections.OrderedDict(data=distributed_data[i])
    

补充说明:Python 3.7及以上版本中,原生普通字典已经默认保证键的插入顺序,如果你的联邦学习框架没有强制要求传入collections.OrderedDict类型,直接使用普通字典data = {'data': distributed_data[i]}也可以正常运行,不会出现顺序错乱问题。

内容的提问来源于stack exchange,提问作者divya reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:51:16