0

我使用 .csv 文件获得了有关车祸统计的数据集。我希望用户输入 State 并显示有关该 State 的所有信息以供用户查看。怎么能这样做?

数据集:

State,Population,Vehicle Miles traveled (millions),Fatal Crashes,Deaths
Alabama,"4,903,185","71,735",856,930
Alaska,"731,545","5,881",62,67
Arizona,"7,278,717","70,281",910,981
Arkansas,"3,017,804","37,099",467,505
California,"39,512,223","340,836","3,316","3,606"
Colorado,"5,758,736","54,634",544,596
Connecticut,"3,565,287","31,601",233,249
Delaware,"973,764","10,245",122,132
District of Columbia,"705,749","3,756",22,23
Florida,"21,477,737","226,514","2,950","3,183"
Georgia,"10,617,423","133,128","1,377","1,491"
Hawaii,"1,415,872","11,024",102,108
Idaho,"1,787,065","18,058",201,224
Illinois,"12,671,821","107,525",938,"1,009"
Indiana,"6,732,219","82,719",751,809
Iowa,"3,155,070","33,537",313,336
Kansas,"2,913,314","31,843",362,411
Kentucky,"4,467,673","49,410",667,732
Louisiana,"4,648,794","51,360",681,727
Maine,"1,344,212","14,871",143,157
Maryland,"6,045,680","60,216",484,521
Massachusetts,"6,892,503","64,890",321,334
Michigan,"9,986,857","102,174",902,985
Minnesota,"5,639,632","60,731",333,364
Mississippi,"2,976,149","41,091",581,643
Missouri,"6,137,428","79,168",818,880
Montana,"1,068,778","12,892",166,184
Nebraska,"1,934,408","21,242",212,248
Nevada,"3,080,156","28,794",285,304
New Hampshire,"1,359,711","13,828",90,101
New Jersey,"8,882,190","78,205",525,559
New Mexico,"2,096,829","27,772",368,424
New York,"19,453,561","123,986",876,931
North Carolina,"10,488,084","122,475","1,284","1,373"
North Dakota,"762,062","9,826",91,100
Ohio,"11,689,100","114,694","1,039","1,153"
Oklahoma,"3,956,971","44,648",584,640
Oregon,"4,217,737","35,808",451,489
Pennsylvania,"12,801,989","102,864",990,"1,059"
Rhode Island,"1,059,361","7,581",53,57
South Carolina,"5,148,714","57,939",922,"1,001"
South Dakota,"884,659","9,922",88,102
Tennessee,"6,829,174","82,892","1,040","1,135"
Texas,"28,995,881","288,227","3,294","3,615"
Utah,"3,205,958","32,911",225,248
Vermont,"623,989","7,346",44,47
Virginia,"8,535,519","85,432",774,831
Washington,"7,614,893","62,530",494,519
West Virginia,"1,792,147","19,077",247,260
Wisconsin,"5,822,434","66,348",526,566
Wyoming,"578,759","10,208",120,147
U.S. total,"328,239,523","3,261,774","33,244","36,096"

我在想这样的事情:

crashes = 0
stateInput = input("Please enter a State: ")

print("The total of number of crashes in" , stateInput , "is:" , crashes)
4

1 回答 1

0

我建议你使用标准库的csv 模块来读取文件。特别是csv.DictReader将CSV文件的每一行转换为Python字典的类,这将使处理变得更容易。

以下代码显示了如何做到这一点,并将所有状态字典存储到更高级别的stateDB字典中,以便每个状态的名称与其相关信息相关联,从而有效地使其成为“数据库”。请注意,将状态名称转换为全大写以简化查找。

import csv
from pprint import pprint

accidents_filepath = 'car_accidents.csv'

stateDB = dict()
with open(accidents_filepath, 'r', newline='') as csv_file:
    reader = csv.DictReader(csv_file)
    fieldnames = [name for name in reader.fieldnames if name != 'State']
    for state_info in reader:
        state = state_info['State']
        stateDB[state.upper()] = {key: state_info[key] for key in fieldnames}

#which_state = input("Please enter a state: ")
which_state = 'Mississippi'  # Hardcode for testing purposes.
print(f'Info for the state of {which_state}:')
pprint(stateDB[which_state.upper()])

输出:

Info for the state of Mississippi:
{'Deaths': '643',
 'Fatal Crashes': '581',
 'Population': '2,976,149',
 'Vehicle Miles traveled (millions)': '41,091'}
于 2021-12-07T01:39:03.427 回答