“dict”中与信息相关的打印元素

2024-10-01 04:47:43 发布

您现在位置:Python中文网/ 问答频道 /正文

理解“dict[]”命令有点困难,如果有人能帮助我,我将不胜感激。你知道吗

这是我到目前为止的代码:(我已经输入了我需要帮助的地方和内容) 导入csv

inputYear = input('Please enter the year: ')
inFile = open('babyQldAll.csv', 'rU')
cvsFile = csv.reader(inFile, delimiter=',')

dict = {}

for row in  cvsFile:
    year, name, count, gender = row

if (year == inputYear) and (gender == 'Boy'):
    dict[name] =  count

print('Popular boy names in year %s are:' % inputYear)


# According to information in 'dict',  print (name, count) sorted by 'name' in alphabetical order         



print("Print boy names... ")    


inFile.close()

使用上面的代码,我试图得到以下结果:

Popular boy names in year "2010" are: Aidan 119, Alex 224, Derek 143, Steven 212, Tom 111.....

从以下输入:

File 2010:
2010, Steven, 212, Boy
2010, Mary, 423, Girl
2010 , Tom, 111, Boy
2010, Jessica, 223, Girl
(and so on)

Tags: csv代码nameinnamescountyeardict
2条回答

这应该做到:

from __future__ import print_function

import csv
import sys

if sys.version_info.major < 3:
    input = raw_input

input_gender = 'Boy'  # could make this a user-supplied value too

input_year = input('Please enter the year: ').strip()
file_name = 'babyQldAll.csv'

with open(file_name) as fobj:
    csv_file = csv.reader(fobj)
    name_counts = {}
    for row in csv_file:
        year, name, count, gender = (entry.strip() for entry in row)
        if year == input_year and gender == input_gender:
            name_counts[name] = int(count)

print('Popular {} names in year {} are:'.format(input_gender.lower(), input_year))
for name, count in name_counts.items():
    print(name, count)

print('\nBoys names in alphabetical order:')
for name in sorted(name_counts.keys()):
    print(name)

print('\nBoys names in alphabetical order and counts:')
for name, count in sorted(name_counts.items()):
    print('{}: {}'.format(name, count))

注意事项:

  1. 在python2中,应该使用raw_input,在 Python 3。一种方法是让您的程序在python2中以同样的方式工作 第三种方法是在文件的开头添加以下内容:

    import sys
    
    if sys.version_info.major < 3:
        input = raw_input
    

    现在您可以使用input,而不管是什么Python版本。

  2. 您的输入在逗号后有一个空格。因为只有csv读卡器 查找逗号,空格是列表中字符串的一部分 一排。用(entry.strip() for entry in row)解出来 这个。

  3. 所以我比较了一个字符串的年份。我也许值得改变信仰 两者,input_yearyear到和int并比较它们。

用问题中的示例文件运行程序如下:

Please enter the year: 2010
Popular boy names in year 2010 are:
Tom 111
Steven 212

Boys names in alphabetical order:
Steven
Tom

Boys names in alphabetical order and counts:
Steven: 212
Tom: 111

dict[]用于使用键检索字典中存储的值。因此,如果您将上述内容存储为:

names = {'Steven': [212, 'Boy', 2010], 'Mary': [423, 'Girl', 2010]}

想要检索Steven的信息,你会说names['Steven'],它会返回列表[212, 'Boy', 2010]。你知道吗

我不认为这将完全回答你的问题,但它应该帮助你开始。如果您想对字典进行预排序,还可以查看this。你知道吗

相关问题 更多 >