Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17

Группировать значения словаря по ключам

03.09.2016, 18:28. Показов 7552. Ответов 10

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Помогите в следующем вопросе. Есть словарь:
а = {United States: 129.203.29.198, Switzerland: 148.187.4.164, None: 239.202.246.184, None: 245.184.161.17, China: 101.159.154.180, China: 175.72.176.94, United States: 98.70.55.74}

Нужно сгруппировать отчет по ключам в текстовый файл в в виде:

United States: 1.1.1.1, 2.2.2.2, 3.3.3.3
China: 4.4.4.4, 5.5.5.5

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2016, 18:28
Ответы с готовыми решениями:

Сортировка словаря по ключам И по значениям
Здравствуйте! Подскажите, пожалуйста: Предположим, у нас есть словарь: A = {'Dom': 4, 'Hata': 5, 'Zdanie': 5, 'Hizhina': 3} Как...

Как обойти привязку одного объекта к разным ключам словаря
Доброго времени суток Допустим у нас есть какой нибудь словарь: dict = {"test1": } Мне нужно добавить пару с другим...

Как проверить наличие значения словаря словаря в словаре словарей?
есть массив parsdata, который содержит результаты парсинга. нужно проверить, спарсилось ли что-то новое. или нет в сравнении со словарем...

10
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
04.09.2016, 20:16
Что за словарь такой, у которого ключи повторяются?
0
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17
04.09.2016, 20:39  [ТС]
Не правильно задал вопрос.

Есть код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests
 
ips = ['129.203.29.198', '148.187.4.164','239.202.246.184','245.184.161.17','179.83.187.56','101.159.154.180','127.153.44.165',
'31.6.213.69','175.72.176.94','131.113.160.111','98.70.55.74']
 
for i in  ips:
 
    response = requests.get('http://freegeoip.net/json/' + i)
 
    country = (response.json().get('country_name'))
 
    i = list(i.split('\n'))
 
    country = list (country.split('\n'))
 
    print(country,'-', i)

Получаю ответ в следующем виде:
['United States'] - ['129.203.29.198']

['Switzerland'] - ['148.187.4.164']

[''] - ['239.202.246.184']

[''] - ['245.184.161.17']

['Brazil'] - ['179.83.187.56']

['China'] - ['101.159.154.180']

[''] - ['127.153.44.165']

['Poland'] - ['31.6.213.69']

['China'] - ['175.72.176.94']

['Japan'] - ['131.113.160.111']

['United States'] - ['98.70.55.74']


Сгруппировать айпишники по странам и вывести в файл в следующем формате:

United States: 1.1.1.1, 2.2.2.2, 3.3.3.3

China: 4.4.4.4, 5.5.5.5
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.09.2016, 22:54
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import requests
 
ip = ['129.203.29.198', '148.187.4.164', '239.202.246.184', '245.184.161.17',
      '179.83.187.56', '101.159.154.180', '127.153.44.165',
      '31.6.213.69', '175.72.176.94', '131.113.160.111', '98.70.55.74']
res = {}
 
for i in ip:
    country = requests.get('http://freegeoip.net/json/' + i).json().get('country_name')
    country = country if country else 'other'
    res.setdefault(country, list()).append(i)
 
print(res)
1
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17
04.09.2016, 23:30  [ТС]
а как записать в правильном формате в текстовый файл?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.09.2016, 23:34
sashkouuu, а самому попробовать ни как? "Задача" элементарнейшая
1
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17
04.09.2016, 23:40  [ТС]
alex925, Я изначально пошел не правильным путем. Запутался уже. Спасибо за ответ, но уже ума не хватает дописать вывод в файл. Помоги пожалуйста.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.09.2016, 23:48
Вот алгоритм:
1. Получаешь у словаря список его ключей (метод keys)
2. Приходишься циклом по этому списку и на каждой итерации извлекаешь из словаря список хранящийся под этим ключом
3. Создаешь строку состоящую из значений хранящихся в списке (с помощью метода строк join)
4. Собираешь из ключа и строки полученной в пункте 3 нужного вида строку и пишешь в файл.
1
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17
05.09.2016, 00:36  [ТС]
alex925, не получается 4 пункт
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
05.09.2016, 00:50
Python
1
2
3
some_value = 1
some_value2 = '1, 3, 45'
print('{}: {}'.format(some_value, some_value2))
1
0 / 0 / 1
Регистрация: 10.03.2016
Сообщений: 17
05.09.2016, 09:39  [ТС]
Спасибо всем за помощь, все получилось

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests
input_file = None
with open ('ips.txt', 'r') as input_ip:
    input_file = input_ip.read().split('\n')
    ips = list(input_file)
report = {}
for i in  ips:
    country = requests.get('http://freegeoip.net/json/' + i).json().get('country_name')
    country = country if country else 'Unknown_country'
    report.setdefault(country, list()).append(i)
key_country = report.keys()
with open('output.txt','w') as out:
    for i in key_country:
        ip = (report[i])
        str_ip = ', '.join(ip)
        out.write('{}: {}''\n'.format(i, str_ip))
        out.write('\n')
print ('Done!')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.09.2016, 09:39
Помогаю со студенческими работами здесь

Создать кнопки, текст на которых соответствует ключам словаря
Здравствуйте. Возник вопрос, связанный с созданием кнопок tkinter. Мне нужно, чтобы создавались кнопки, текст на которых соответствует...

Найти наибольшее и наименьшее значение словаря, удалить их и отсортировать словарь по ключам
Найти наибольшее и наименьшее значение словаря, удалить их и отсортировать словарь по ключам. Я не могу удалить максимальное и минимально...

Как правильно вывести значения по ключам?
Добрый день. Проблема в том,что я не знаю,как вывести значения на которые ссылаются ключи?Таблица Тур-країна (в прикрепленном изображении)...

Как в Java можно накопить значения по ключам?
Подскажите, плиз, как в Java можно накопить значения по ключам. Например, в С++ есть STL и делаем это так: std:map<String,...

Вставить значения из одного массива в другой, если они совпадают по ключам
Доброго времени суток, как вставить значение из одного массива в другой. вот массивы: //$array_phrase Array ( => Array ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru