列表检查第二项打印列表中的第一项

时间:2014-06-17 02:24:36

标签: python python-3.x

我正在尝试从列表中解析项目(从文件中)

file data with name, number of goals, passes.
Luis,8,3
Montes and Kyle,10,8
Sharon, 22, 4
Nayum,3,8

到目前为止:

filen=open("WorldData.txt", 'r')

values = []##List
for line in open(filen):
    values.append(line.rstrip('\n').split(','))

xl=values

numlist=[]
for line in xl:
    numlist.append(int(line[1]))#second element which are goals

x=(max(numlist))
print(x)

filen.close()

哪个会给出:22但我也试图找到获胜者的名字。 我尝试索引,所以我可以找到值为[::]的行号,这样我就可以打印出第一个元素......

print(xl.index(str(x))) 

但它说

ValueError: '22' is not in the list

所以我甚至无法到达那里。

如何找到最能实现目标的人?

2 个答案:

答案 0 :(得分:1)

以下是我将如何阅读csv数据:

import csv

data={}
with open(fn, 'r') as fin:
    reader=csv.reader(fin)
    header=next(reader)
    for row in reader:
        data[row[0]]=list(map(int, row[1:]))
print(data)
# {'Luis': [8, 3], 'Nayum': [3, 8], 'Montes and Kyle': [10, 8], 'Sharon': [22, 4]}

您现在可以看到dict lists

现在只需查找具有值number of goals的最大值的条目,该值是每个列表中的第一个元素。您可以使用带有键功能的内置max来查看谁赢了:

print(max(data.items(), key=lambda t: t[1][0]))
# ('Sharon', [22, 4])

答案 1 :(得分:0)

使用numlist作为字典。 。所以代码就像

goals = 0

numlist={}
for line in xl:
    numlist[line[0]]=int(line[1])#second element witch are goals

for player in numlist:
    if numlist[player] > goals:
        winner = player
        goals = numlist[player]
print goals, winner

答案印的是22号沙龙。我会照顾重复,或者在多个赢家之间打成平手。为此你可以保留一个胜利者名单并附加它。