我有一个元组列表:

res=[(0, 0, 255, 0, 0),(1, 0, 255, 0, 0),(0, 1, 255, 0, 0),(1, 1, 255, 0, 0),
(4, 4, 0, 255, 0),(5, 4, 0, 255, 0),(4, 5, 0, 255, 0),(5, 5, 0, 255, 0)]

这是我的 idea :

keys = [l[2:] for l in res]
values = [l[:2] for l in res]
d=dict(zip(keys, values))

这是我的输出:

{(255, 0, 0): (1, 1), (0, 255, 0): (5, 5)}

我的输出错误,我需要这个:

{(255, 0, 0): [(0, 0),(1,0),(0,1),(1,1)], 
(0, 255, 0): [(4,4),(5,4),(4,5),(5,5)]}

有什么 idea 吗?

推荐答案

对于这个问题,有更优雅的解决方案,但练习的重点是(可能)练习逻辑和控制流程,因此我将展示一个更适合初学者的解决方案:

output = {}
for entry in res:
    key, value = entry[2:], entry[:2]
    if key not in output:
        output[key] = []
    output[key].append(value)

如前所述,collections.defaultdict(list)是解决此类问题的最佳人选.

Python相关问答推荐

在pandas DataFrame上运行apply()时如何访问DateTime索引?

在Python中,如何初始化集合列表脚本的输出

如何将Pydantic URL验证限制为特定主机或网站

在Python中根据id填写年份系列

由于瓶颈,Python代码执行太慢-寻求性能优化

ambda将时间戳与组内另一列的所有时间戳进行比较

从管道将Python应用程序部署到Azure Web应用程序,不包括需求包

从DataFrame.apply创建DataFrame

如果索引不存在,pandas系列将通过索引获取值,并填充值

Pandas 第二小值有条件

acme错误-Veritas错误:模块收件箱没有属性linear_util'

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

带条件计算最小值

如何使用html从excel中提取条件格式规则列表?

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

当我try 在django中更新模型时,模型表单数据不可见

从嵌套的yaml创建一个嵌套字符串,后面跟着点

在极中解析带有数字和SI前缀的字符串

python中csv. Dictreader. fieldname的类型是什么?'