嵌套列表中特定项目的求和

2024-04-05

我有一个数据文件,例如:

1  123  something else
2  234  something else
3  500  something else
.
. 
.
1  891  something else
2  234  something else
3  567  something else 
.
.
.

我试图最终得到一个文件:

1 1014
2  468
3 1067

也就是说,如果第 1 列中的数字相同,则将第 2 列(或其他列)中的数字相加。我相信将列读入嵌套列表并从那里开始是可行的方法,但我一直在努力解决这个问题。我尝试的另一种方法是使用我感兴趣的条目创建一个新文件:

for next in f.readlines():
    output.write(next[0:1] + "," + next[3:6]+ "\n")
    if not next:
        break

with open(output,"r") as file:
    data_list=[[int(x) for x in line.split(",")] for line in file]

print data_list

这返回

[[1, 123], [2, 234], [3, 500], [1, 891], [2, 234], [3, 567]]

我想我可以循环遍历该列表并比较 data_list[x][0] 并添加值(如果它们匹配),但这似乎不是一个优雅的解决方案。 谁能建议一种更优雅的方法来做到这一点? 特别是,我一直在努力对最终得到的嵌套列表中的特定项目进行求和。


使用字典来跟踪总和;用一个collections.defaultdict() https://docs.python.org/2/library/collections.html#collections.defaultdict如果以前没有见过键,则可以更容易地从 0 开始键:

from collections import defaultdict

sums = defaultdict(int)

with open(filename) as f:
    for line in f:
        col1, col2, rest = line.split(None, 2)
        sums[col1] += int(col2)

这会读取您的初始文件,将空白行拆分两次以获取前两列,然后根据第一列对第二列求和:

>>> from collections import defaultdict
>>> sample = '''\
... 1  123  something else
... 2  234  something else
... 3  500  something else
... 1  891  something else
... 2  234  something else
... 3  567  something else 
... '''.splitlines()
>>> sums = defaultdict(int)
>>> for line in sample:
...     col1, col2, rest = line.split(None, 2)
...     sums[col1] += int(col2)
... 
>>> sums
defaultdict(<type 'int'>, {'1': 1014, '3': 1067, '2': 468})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套列表中特定项目的求和 的相关文章

随机推荐

  • 递归忽略特定目录中除 .json 文件之外的所有文件

    我有一个类似于下面的文件结构 foo bar foo node modules foo bar json node modules foo bar foo bar 我想要做的是忽略里面的所有文件node modules文件夹除了json文件
  • 如何将不同记录的数据添加到一条记录中?

    如果没有时间请看一下示例 我有两种类型的用户 临时用户和永久用户 临时用户以访客身份使用系统 只需提供他们的姓名并使用它 但系统需要跟踪他们 永久用户是指已注册且永久的用户 一旦用户为自己创建永久记录 我需要将用户作为访客时跟踪的所有信息复
  • Node.js 和 WebSockets (Socket.io) 单元测试

    有人可以使用 WebSockets Socket io 为 Node js 提供坚如磐石 极其简单的单元测试吗 我在 Node js 中使用 socket io 并在测试中查看了 socket io client 来建立与服务器的客户端连接
  • 从 PendingIntent(通知按钮)启动 JobIntentService?

    在我的应用程序中 我有一个通知按钮 它使用 IntentService 在后台触发一个简短的网络请求 在这里显示 GUI 没有意义 这就是我使用服务而不是 Activity 的原因 请参阅下面的代码 Build the Intent use
  • Selenium 在 Firefox 中下载 PDF 的问题

    我正在结合 Firefox 61 0 和 Geckodriver 0 21 0 将我们的内部 Java Selenium 框架升级到最新版本 3 14 0 当我使用 Firefox 自动下载 PDF 文件时遇到问题 例如在这个link ht
  • 在 H2 数据库中找不到函数“TO_DATE”

    我有一个 SQL 语句并尝试使用 Java 中的 H2 内存数据库执行 抛出以下异常 SQL SELECT ACCT RULE ID ACCT ACTION ID FROM ACCT RULE WHERE ACCT ACTION ID AN
  • 当列数据是动态时,如何对交叉表查询中的列进行排序?

    我一直在对这个主题进行一些研究 但我似乎找不到一个可行的解决方案 也找不到一个解释得足够好让我可以实施的解决方案 如果您曾经在 Access 中创建过交叉表查询 您就会知道默认情况下 Access 按字母顺序对列进行排序 您可以通过访问更改
  • Oracle 数据脱敏

    我们有一个要求 即使用 Oracle 函数来屏蔽特定的表列 该函数提供持久的屏蔽输出字符串 我们尝试了Oracle Hash Function 但它没有给出String类型的返回值 我们尝试了 Oracle Random 函数 dbms r
  • Angular-防止从下拉列表中选择相同的选项

    I made this dropdown with a textarea for input in angular material dialog There I have only three options in the dropdow
  • 双击选择 PhpStorm 中的空白

    在 Sublime 中 我可以双击两个字符之间的空白 以便仅选择空白 例如在 foo bar 将导致选择 foo bar 然而在 PhpStorm 中它选择整行 是否有一个设置可以切换 以便可以通过双击来选择空白 就像我可以双击变量来选择它
  • MultiAutoCompleteTextView 不显示结果

    我的活动中有以下代码 ParseQuery
  • Android:定时器/延迟替代方案

    我想让一个图像在 60 毫秒内可见 然后不可见 然后我想让另一个图像执行相同的操作 等等 我认为我没有正确使用计时器 因为当我运行该应用程序时 两个图像会同时打开 并且当我按下使用此功能的按钮时 两个图像不会消失 这是一些示例代码 time
  • Ionic / Leaflet - 无法获取 Tiles 404 Not Found(从缓存)

    我被一个非常奇怪的问题所困扰 我在用着leaflet http leafletjs com with 角度传单指令 https github com tombatossals angular leaflet directive 在之前的应用
  • 在 Jetty 7 中将 JSESSIONID cookie 设置为 httpOnly

    我们正在运行 grails 2 0 jetty 7 6 6 并且需要将 JSESSIONID cookie 设置为 httpOnly stackoverflow 上的所有答案似乎都涉及 Servlet 3 0 需要 jetty 8 或 to
  • 正则表达式匹配 3 到 4 位数字

    我正在学习正则表达式 我正在尝试找到这个字符串 day1otlk XXXX gif 其中 4 个 X 是 3 到 4 个随机数字 这就是我到目前为止所拥有的 我接近了吗 qr day1otlk d gif i 您可以指定 3 或 4 位数字
  • Quartz 2D 与 OpenGL ES 学习曲线

    我开发 iPhone 应用程序已有几个月了 我想知道您对 Quartz 与 OpenGL ES 1 x 或 2 0 学习曲线的看法 你可以说出你的观点 我的问题是 我是一名想成为游戏开发者的人 所以先用quartz开发然后再迁移是个好主意吗
  • 如何记录 ActiveResource 使用的 URL?

    Rails ActiveResource 很棒 除了一件事 据我所知 无法查看它在幕后使用的 URL 例如 假设我有一个名为 Issue 的 ActiveResource 用于 myIssues com issues xml 上的 Web
  • 使原始的 Angular 表单控件变脏[重复]

    这个问题在这里已经有答案了 Angular 4 中有一种反应式形式 一些控制应该在某个时刻以编程方式设置 this form formBuilder group foo this form controls foo setValue foo
  • getJSON 和 $.ajax 之间的区别

    从一开始我就想说我知道THIS https stackoverflow com questions 1076013 difference between getjson and ajax in jquery问题与我的标题相同 但该用户提出了
  • 嵌套列表中特定项目的求和

    我有一个数据文件 例如 1 123 something else 2 234 something else 3 500 something else 1 891 something else 2 234 something else 3 5