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

Куда пропадает переменная

22.09.2018, 23:11. Показов 2765. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
скажите почему пропадает переменная my_cont в третей строке.
Python
1
2
3
4
5
6
7
for d in cont:
             my_count=d.count(d[1])
             if my_count<=1000:
              var_dump(my_count)
                bad_ip.update({'ip',d[1]})
                bad_ip.update({'count',my_count})
var_dump(my_count)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2018, 23:11
Ответы с готовыми решениями:

Куда пропадает ИЦ?
Вот уж действительно обидно, когда работаешь над своим ресурсом, находишь новые контакты, меняешься ссылками, баннерами и т.п., а ИЦ менее...

Куда пропадает память?
Пропадает память после выхода в интернет,хоть и чищу сам браузер,и чищу CCleanerom,а память здувает,что происходит,кто подскажет?зарание...

Куда пропадает скорость?
Всем привет! Сегодня переустановил Windows 7 и скорость интернета заметно снизилась(до этого стояла тоже семёрка) в настройках...

41
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
29.09.2018, 22:33  [ТС]
Студворк — интернет-сервис помощи студентам
Garry Galler,
www.site.ru 107.23.112.56 - - [01/Apr/2018:00:19:38 +0300] "GET /systems/tai_yoga/ HTTP/1.1" 301 437 "-" "MauiBot (crawler.feedback+wc@gmail.com)" 0
www.site.ru 107.23.112.56 - - [01/Apr/2018:00:19:39 +0300] "GET /news/ HTTP/1.1" 301 421 "-" "MauiBot (crawler.feedback+wc@gmail.com)" 0
www.site.ru 216.244.66.231 - - [01/Apr/2018:00:19:53 +0300] "GET /robots.txt HTTP/1.1" 200 528 "-" "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)" 0
0
165 / 114 / 59
Регистрация: 12.07.2018
Сообщений: 277
30.09.2018, 12:38
Цитата Сообщение от saladdd Посмотреть сообщение
пропадает переменная my_cont в третей строке
Ничего не пропадает, например, для приведённых вами строк данных, my_count будет равен 1 для каждой строки, т.к. в каждой строке IP присутствует ровно один раз.
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
30.09.2018, 22:41  [ТС]
Бард,
Python
1
my_count=d.count(d[1])
что именно она счетает , не очень понимаю в таком случае.
Она счетает одинаковые повторяющиеся элементы - правильно?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.09.2018, 23:30
Цитата Сообщение от saladdd Посмотреть сообщение
что именно она счетает , не очень понимаю в таком случае.
Она считает сколько токенов взятых по индексу 1 находится в списке вида:
Code
1
['www.site.ru', '107.23.112.56', '[01/Apr/2018:00:19:38', '+0300]', '"GET', '/systems/tai_yoga/', 'HTTP/1.1"', '301', '437', '"-"', '"MauiBot', '(crawler.feedback+wc@gmail.com)"', '0']
Так как токен по индексe 1 это ваш ip и
Цитата Сообщение от Бард Посмотреть сообщение
т.к. в каждой строке IP присутствует ровно один раз
, то результат всегда будет один.
И это результат вашей логики. Если она вас не устраивает - вы должна написать другую :-)
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
30.09.2018, 23:33  [ТС]
Garry Galler, а для чего она тогда нужна.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.10.2018, 00:42
Цитата Сообщение от saladdd Посмотреть сообщение
а для чего она тогда нужна.
Для подсчета числа вхождений некоего значения в некий Iterable объект - список,кортеж, строку и т.д.
Вы просто либо неправильно ее применяете (раз вас удивляет результат), либо у вашего кода очень большие проблемы с логикой.
Это как положить в пустой! карман рубль, сказать "крибле-крабле-бумс", а потом заглянуть в тот же карман и удивиться, что рубль по-прежнему всего один.
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
01.10.2018, 02:56  [ТС]
Garry Galler, я могу использовать данную функцию для подсчёта количества одинаковых айпи адресов.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.10.2018, 14:00
Цитата Сообщение от saladdd Посмотреть сообщение
я могу использовать данную функцию для подсчёта количества одинаковых айпи адресов
Можете.
Но вы пытаетесь считать там, где считать нечего.

Какой смысл считать сколько единичек здесь, если известно что, здесь всегда только одна единичка?
Python
1
"1-2-3-4-5-6-7".split('-').count('1')
0
165 / 114 / 59
Регистрация: 12.07.2018
Сообщений: 277
01.10.2018, 17:04
Цитата Сообщение от saladdd Посмотреть сообщение
я могу использовать данную функцию для подсчёта количества одинаковых айпи адресов
При ваших входных данных она просто не нужна. Считать можно вот так:
Python
1
2
3
4
5
6
 for line in f:
      d = line.replace(' - - ', ' ').split()
      if d[1] in bad_ip:
         bad_ip[d[1]] += 1
      else:
         bad_ip[d[1]] = 1
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.10.2018, 19:01
Python
1
2
3
4
5
6
7
8
9
10
11
from pprint import pprint
from collections import defaultdict
 
all_ip = defaultdict(int)
 
with open('access_log.txt','r') as f:
    for line in f:
        tokens = line.replace(' - - ', ' ').split()
        all_ip[tokens[1]] += 1 
 
pprint(all_ip)
Code
1
defaultdict(<class 'int'>, {'216.244.66.231': 1, '107.23.112.56': 2})
Python
1
2
3
# обменять местами ключи и значения, чтобы получить словарь с ключами в виде числа вхождений ip=>ip
result = dict(zip(all_ip.values(),all_ip.keys()))
pprint(result)
Code
1
{1: '216.244.66.231', 2: '107.23.112.56'}
Использование встроенной коллекции-счетчика
Python
1
2
3
4
5
6
7
8
9
10
from collections import Counter
 
all_ip = []
with open('access_log.txt','r') as f:
    for line in f:
        tokens = line.replace(' - - ', ' ').split()
        all_ip.append(tokens[1])
        
result = Counter(all_ip)        
pprint(result)
Code
1
Counter({'107.23.112.56': 2, '216.244.66.231': 1})

Словарь в котором только повторяющиеся ip:
Python
1
2
3
4
5
6
7
8
9
10
11
from collections import defaultdict
 
rows = defaultdict(list)
 
with open('access_log.txt','r') as f:
    for line in f:
        tokens = line.replace(' - - ', ' ').split()
        rows[tokens[1]].append(tokens)  # записываем всю строку токенов  - если нужно
 
bad_ip = {ip:len(val) for ip,val in rows.items() if len(val) > 1 }        
pprint(bad_ip)
Code
1
{'107.23.112.56': 2}
Можно сгруппировать ip по числу вхождений:
Python
1
2
3
4
5
6
7
8
9
10
from itertools import groupby 
 
all_ip = []
with open('access_log.txt','r') as f:
    for line in f:
        tokens = line.replace(' - - ', ' ').split()
        all_ip.append(tokens[1])
 
for key,group in groupby(all_ip,key=lambda x: all_ip.count(x)):
    print(key,list(group))

Code
1
2
2 ['107.23.112.56', '107.23.112.56']
1 ['216.244.66.231']


P.S. Вариантов сделать подобное еще 100500...
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
07.10.2018, 19:49  [ТС]
Garry Galler, я вобще остальные данные тоже хотел оставить.

Добавлено через 2 минуты
ну я имею ввиду кроме айпи.

Добавлено через 1 час 25 минут
только вот тут неочень понятно во втором разе зачем токены добовлять в токены.
Python
1
rows[tokens[1]].append(tokens)
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
09.10.2018, 00:26  [ТС]
Garry Galler, моглибы вы объяснить что мы делаем вот этим кодом
Python
1
rows[tokens[1]].append(tokens)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.10.2018, 01:33
Цитата Сообщение от saladdd Посмотреть сообщение
, моглибы вы объяснить что мы делаем вот этим кодом
Читаем комментарий:
Цитата Сообщение от Garry Galler Посмотреть сообщение
# записываем всю строку токенов - если нужно
Если не нужно - не записываем, а берем оттуда только то, что нужно.
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
10.10.2018, 02:15  [ТС]
Garry Galler, честно говоря нуждаюсь в объяснении вот этой строки.
Python
1
bad_ip = {ip:len(val) for ip,val in rows.items() if len(val) > 1 }
Добавлено через 8 минут
Garry Galler, я правльно понимаю , что вот эта функция
Python
1
rows = defaultdict(list)
так же как и
Python
1
collections.Counter
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.10.2018, 12:22
Counter это словарь со встроенным счетчиком, а defaultdict словарь с дефолтным типом данных. Он ничего не считает, он только автоматически создает значения, например список как значение ключа.
Цитата Сообщение от saladdd Посмотреть сообщение
bad_ip = {ip:len(val) for ip,val in rows.items() if len(val) > 1 }
Это выражение для "генерации" словаря. Проверка на len(val) > 1 здесь для того, чтобы в итоговый словарь попали только те ключи, у которых длина списка значений больше одного. ТО есть только те строки (разбитые на токены), где есть IP совпадающие с IP в других строках.
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
11.10.2018, 00:08  [ТС]
Garry Galler, а могли бы вы эту строку переписать в такой как бы сказать меннее типичный для данного языка
вид, я надеюсь я правильно понял.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.10.2018, 01:54
Цитата Сообщение от saladdd Посмотреть сообщение
меннее типичный для данного языка
Python
1
2
3
4
bad_ip = {}
for ip,val in rows.items():
    if len(val) > 1:
        bad_ip[ip] = len(val)
P.S. Все тоже самое, только в четыре строки.
1
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
13.10.2018, 05:21  [ТС]
Garry Galler,
Python
1
2
3
for line in f:
        tokens = line.replace(' - - ', ' ').split()
        rows[tokens[1]].append(tokens)
Очень спросить ещё хотел, скажите что мы делаем последней строкой.И что на выходе я несовсем понимаю получается.

Добавлено через 3 часа 2 минуты
Garry Galler, это самый простой , а есть ли какой-нибудь альтернативный способ.

Добавлено через 1 час 3 минуты
Garry Galler, я имею ввиду как там ip и val оказались.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
13.10.2018, 14:18
Цитата Сообщение от saladdd Посмотреть сообщение
И что на выходе я несовсем понимаю получается
Python
1
pprint(rows)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
defaultdict(<class 'list'>,
           {'107.23.112.56': [['www.site.ru',
                               '107.23.112.56',
                               '[01/Apr/2018:00:19:38',
                               '+0300]',
                               '"GET',
                               '/systems/tai_yoga/',
                               'HTTP/1.1"',
                               '301',
                               '437',
                               '"-"',
                               '"MauiBot',
                               '(crawler.feedback+wc@gmail.com)"',
                               '0'],
                              ['www.site.ru',
                               '107.23.112.56',
                               '[01/Apr/2018:00:19:39',
                               '+0300]',
                               '"GET',
                               '/news/',
                               'HTTP/1.1"',
                               '301',
                               '421',
                               '"-"',
                               '"MauiBot',
                               '(crawler.feedback+wc@gmail.com)"',
                               '0']],
            '216.244.66.231': [['www.site.ru',
                                '216.244.66.231',
                                '[01/Apr/2018:00:19:53',
                                '+0300]',
                                '"GET',
                                '/robots.txt',
                                'HTTP/1.1"',
                                '200',
                                '528',
                                '"-"',
                                '"Mozilla/5.0',
                                '(compatible;',
                                'DotBot/1.1;',
                                'http://www.opensiteexplorer.org/dotbot,',
                                'help@moz.com)"',
                                '0']]})
Добавлено через 2 минуты
Цитата Сообщение от saladdd Посмотреть сообщение
как там ip и val оказались
Мы их туда записали. defaultdict это словарь, только с некоторыми особенностями.
0
1 / 1 / 1
Регистрация: 23.04.2014
Сообщений: 647
15.10.2018, 08:25  [ТС]
Garry Galler, c какими такими особенностями , я непонимаю как это работает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2018, 08:25
Помогаю со студенческими работами здесь

Куда пропадает все?
Беру значения из Тable записываю в listbox(он на второй форме,а table на первой!),все работает но только 1 раз,как только закрываю окно...

Видеопамять куда-то пропадает!
у меня MSI GTX 970 ! недавно прошёл на высоких call of duty black ops 3 с 70-90 фпс без проблем, недавно начал играть в Fallout 4 проиграл...

Переменная пропадает.
Дело вот в чем: Переменная total1 при запуске ехе выдает 0 так-как и обьявленна она равной нулю. а должна время! А если поставить...

Пропадает переменная
Доброго времени суток, я новичок в этом деле и поэтому проблема может быть до простоты глупой. Есть функция, которая обращается к базе...

Куда пропадает место на диске С:?
Куда пропадает место на диске С:? из 58,5 Гб осталось 4,5 Гб ССleaner показывает максимально 2,5 Гб можно удалить. Но куда остальное...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru