2
나는 뭔가를 놓치고 있어야하지만 가장 큰 값을 찾아 csv.DictReader() 함수를 사용하여 인쇄하는 데 어려움이 있습니다.파이썬 csv : 가장 큰 값을 가진 행 찾기
CSV 파일입니다 (행이 형식에 너무 넓은 때문에이 필드를 절단뿐만 아니라 행 한) 같은 :
가traverse;damage;hull_front;turret_back;penetration;full_name;tier;hull_back;turret_sides;type;hull_sides;turret_front
38;30;18;16;32;Light Tank MS-1;1;16;16;Light Tank;16;18
40;30;13;13;32;Light Tank BT-2;2;13;13;Light Tank;13;15
55;36;15;15;34;Light Tank T-26;2;15;15;Light Tank;15;15
(희망 나는 모든 필드를 가지고, 내가 가진 사용 원본 파일로 절단.)
을 나는
tanks = csv.DictReader(open('tanks.csv', 'r'), delimiter = ';')
이 파일을 읽을 수 있지만 나는 예를 발견 할 때 어떤 열이 가장 큰 가치를 가지고 어떤 열, 나는 사전을 통해 읽을 수없는 것. 내 시도는 다음과 같습니다
def top_values(tanks):
tank = list(itertools.islice(tanks,1,2))
best_tanks = dict({'turret_front':tank, 'turret_sides':tank, 'turret_back':tank,
'hull_front':tank, 'hull_sides':tank, 'hull_back':tank,
'penetration':tank, 'damage':tank, 'traverse':tank})
fields = ['turret_front', 'turret_sides', 'turret_back',
'hull_front', 'hull_sides', 'hull_back',
'penetration', 'damage', 'traverse']
for tank in tanks:
for field in fields:
if tank[field] > best_tanks[field][field]:
best_tanks[field] = tank
print "Best tanks by values:\n"
for field in fields:
tank = best_tanks[field]
print field + ": " + tank['full_name'] + "(" + tank[field] + ")"
그러나 나는이 작업을 수행 할 수있는 방법
Traceback (most recent call last):
File "./wotalyzer.py", line 102, in <module>
main(sys.argv[1:])
File "./wotalyzer.py", line 98, in main
top_values(tanks)
File "./wotalyzer.py", line 44, in top_values
print field + ": " + tank['full_name'] + "(" + tank[field] + ")"
TypeError: list indices must be integers, not str
를 얻을? 새로운 필드를 쉽게 추가 할 수 있도록 이렇게하고 싶습니다.
그래,이 짓을하고 다른 버그를 수정 한 후 작동합니다 (빈 dict가 함수에 주어짐). – Makis