Работа с файлами

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
Добрый вечер, есть такой вопрос: кто-то знает как считать 140 txt файлов с zip файла, а потом определить отдельно женские и мужские имена, что были популярными в период с 1880 по 2019 года.
вот само задание: Screenshot_33.png
код есть, но по структуре какая-то фигня вышла. Был бы признателен в помощи
код:
Python:
files = []
for i in range(1880, 2020):
    files.append(f"yob{str(i)}.txt")

dict_M = {}
dict_F = {}
for i in files:
    file = open(i, "r")
    lines = file.readlines()
    for line in lines:
        name_M = ""
        name_F = ""
        line = line.split(",")
        if line[1] == "M":
            name_M = name_M + line[0]
        else:
            name_F = name_F + line[0]

        if name_M not in dict_M.keys():
            dict_M[name_M] = 0
        dict_M[name_M] += 1

        if name_F not in dict_F.keys():
            dict_F[name_F] = 0
        dict_F[name_F] += 1
    file.close()

dict_M = sorted(dict_M.items(), key = lambda x: -x[1])
dict_F = sorted(dict_F.items(), key = lambda x: -x[1])

print("Найпопулярніші чоловічі імена: ")
for i in dict_M:
    print(i[0], i[1])
    
print("Найпопулярніші жіночі імена: ")
for i in dict_F:
    print(i[0], i[1])
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
переведите задание, пожалуйста...
 

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
переведите задание, пожалуйста...
прошу прощение
вот задание: нужно написать программу, которая будет считывать каждый файл и определять отдельно мужские, отдельно женские имена, наиболее популярные хотя бы в один из лет в период с 1880 по 2019. Далее программа должна подсчитывать, сколько раз каждое из этих имен становилось самым популярным и выводить ранжированные списки мужских и женских имен в виде:
 

prarabacha

Новичок
Пользователь
Окт 27, 2021
15
1
3
переведите задание, пожалуйста...
код я сделал. был благодарен, если расскажите как сделать так, чтоб при сортировке списков, списки выводились не с наименьшего к большему, а наоборот
сам код :
Python:
files = []
for i in range(1880, 2020):
    files.append(f"archive\yob{i}.txt")

dict1_M = {}
dict1_F = {}
for i in files:
    dict_M = {}
    dict_F = {}
    file = open(i, "r")
    for string in file:
        string = string.split(",")
        if string[1] == "M":
            dict_M[string[0]] = int(string[2])
        else:
            dict_F[string[0]] = int(string[2])
    max_value = max(dict_M.values())
    max_value1 = max(dict_F.values())
    for j in dict_M.keys():
        if dict_M[j] == max_value:
            dict1_M[j] = dict1_M.get(j, 0) + 1
    for j in dict_F.keys():
        if dict_F[j] == max_value1:
            dict1_F[j] = dict1_F.get(j, 0) + 1

list_M = dict1_M.values()
list_F = dict1_F.values()
sorted_list_M = sorted(list_M)
sorted_list_F = sorted(list_F)

print("-" * 30)
print("The most popular males name:")
for i in sorted_list_M:
    for j in dict1_M.keys():
        if dict1_M[j] == i:
            print(j, i)
print("-" * 30)
print("The most popular females name:")
for i in sorted_list_F:
    for j in dict1_F.keys():
        if dict1_F[j] == i:
            print(j, i)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Python:
sorted_list_M = sorted(list_M)[::-1]
# или так
sorted_list_M = sorted(list_M, reverse=True)
# или так
list_M.sort(reverse=True)
# Но это отсортирует сам список
 

Форум IT Специалистов