list - 您将如何在包含元组列表的元组列表上使用 map?
问题描述
我在这里有一个列表,其结构如下:
list = [((1,1),[("A", 1), ("D", 4), ("E", 5)]), ((2,2),[("B", 2)]), ((3,3),[("C",3)])]
我想输出一个具有以下结构的列表(也就是将每个子列表的每个第二个值的值相加,例如 (1+4+5) = 10
[((1,1),10), ((2,2),2), ((3,3),3))]
我不确定如何通过使用 map 甚至 filter 来获得该结构,而我得到的最接近的是:
map snd (concat (map snd list))
产生[1,4,5,2,3]
我将如何实现这种结构?
解决方案
如果你不介意map
你可以在这里使用列表理解:
list = [((1,1),[("A",1),("D",4),("E",5)]),((2,2),[("B",2)]),((3,3),[("C",3)])]
[(fst x, sum [snd y | y <- (snd x) ]) | x <- list]
返回
[((1,1),10),((2,2),2),((3,3),3)]
推荐阅读
- python - 在睡眠状态下运行 pynmea2 时,时间戳无法正确更新
- arrays - MongoDB中的查询不返回结果
- typescript - 带有 TypeScript 的 Vuex 映射函数
- python - 如果大小不同,如何减去字典的值并打印负值
- javascript - CSS悬停不覆盖REACT状态内联道具
- php - symfony 4 实体管理器刷新有时不起作用
- android - Android Hilt ViewModel 无法检测依赖关系
- android - 在通知上获取点击事件
- wsl-2 - 如何在 WSL 中安装和使用 Wt(Web GUI 库)
- python - 有没有更 Pythonic 的方式来使用多个列表理解?