Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表列表中查找索引和总和_Python_List_Csv_Sum - Fatal编程技术网

Python 在列表列表中查找索引和总和

Python 在列表列表中查找索引和总和,python,list,csv,sum,Python,List,Csv,Sum,你好,我有什么我希望是一个容易解决的问题。我正在尝试读取csv文件并将部分内容写入列表。我需要确定每行的索引和值,然后进行总结 因此,该行将有32个值……每个值都是一个分类(0类、1类等),并带有一个与其关联的数字。我需要一个pythonic解决方案来解决这个问题 import os,sys,csv csvfile=sys.argv[1] f=open(csvfile,'rt') reader=csv.reader(f) classes=[] for row in reader: class

你好,我有什么我希望是一个容易解决的问题。我正在尝试读取csv文件并将部分内容写入列表。我需要确定每行的索引和值,然后进行总结

因此,该行将有32个值……每个值都是一个分类(0类、1类等),并带有一个与其关联的数字。我需要一个pythonic解决方案来解决这个问题

import os,sys,csv
csvfile=sys.argv[1]
f=open(csvfile,'rt')
reader=csv.reader(f)
classes=[]
for row in reader:
  classes.append(row[60:92])
f.close()

classes = [' ', '1234', '645', '9897'],  [' ', '76541', ' ', '8888']
如何从每个列表中提取索引值以获得每个列表的总和? 例如:0=('','')1=('1234','76541')2=('645','')3=('9897','888') 然后找出每一个的总和

class 0 = 0
class 1 = 77775
class 2 = 645
class3 = 18785

非常感谢您的任何帮助

我发现您的用例有点难以理解,但此列表理解是否为您提供了一些解决问题的新思路

>>> classes = [' ', '1234', '645', '9897'],  [' ', '76541', ' ', '8888']
>>> [sum(int(n) for n in x if n != ' ') for x in zip(*classes)]
[0, 77775, 645, 18785]

您可以在浏览CSV文件行时求和。(例如,将for类循环放入行循环中)…:


我真正想知道的是如何得到列表列表中的每个索引值并将它们相加。因此,在循环中,您可以为每个列表打印所有索引0。抱歉,时间太晚了,所有的咖啡因都消失了……这是一个多么好的解决方案……先生,你知道什么是需要知道的,当知道什么是已知的很重要的时候,是的……谢谢……知道了。。。
>>> classes = [[' ', '1234', '645', '9897'],  [' ', '76541', ' ', '8888']]
>>> my_int = lambda s: int(s) if s.isdigit() else 0
>>> class_groups = dict(zip(range(32), zip(*classes)))
>>> class_groups[1]
('1234', '76541')
>>> class_sums = {}
>>> for class_ in class_groups:
...     group_sum = sum(map(my_int, class_groups[class_]))
...     class_sums[class_] = group_sum
...
>>> class_sums[1]
77775
>>> class_sums[3]
18785
>>>
>>> classes
[[' ', '1234', '645', '9897'], [' ', '76541', ' ', '8888']]
>>> sums = {}
>>> for row in classes:
...     for class_, num in enumerate(row):
...         try:
...             num = int(num)
...         except ValueError:
...             num = 0
...         sums[class_] = sums.get(class_, 0) + num
...
>>> sums
{0: 0, 1: 77775, 2: 645, 3: 18785}