#python
#python
Вопрос:
мой 2D-список так же, как:
log = [[time1, 'aaa', '123.123.123.123'], [time2, 'def', '123.123.123.123'], [time3, 'aaa', '123.123.123.123'], [time4, 'bbb', '123.123.123.123'], [time5, 'bbb', '123.123.123.123']]
что я хочу, так это вывод, приведенный ниже, с помощью цикла for:
aaa: 2
def: 1
bbb: 2
как я могу посчитать конкретный col в 2D-списке по циклу?
Комментарии:
1. Знаете ли вы, что такое счетчик в python? tutorialspoint.com/counters-in-python
Ответ №1:
Это здесь должно дать вам решение
from collections import Counter
for k, v in Counter([a[1] for a in log]).items():
print(f"{k}: {v}")
Выходной сигнал:
aaa: 2
def: 1
bbb: 2
Ответ №2:
Если вы хотите попробовать с обычным dict
:
log = [[time1, 'aaa', '123.123.123.123'], [time2, 'def', '123.123.123.123'], [time3, 'aaa', '123.123.123.123'], [time4, 'bbb', '123.123.123.123'], [time5, 'bbb', '123.123.123.123']]
#Keep track of the counts in the dictionary
counter = dict()
for item in log:
key = item[1]
counter[key] = counter.get(key, 0) 1 #If the key doesn't exist, initialize its count to 0
print(counter)
Ответ №3:
Этот код должен соответствовать вашим требованиям :
import numpy as np
from collections import Counter
Counter(np.array(log)[:,1])
Комментарии:
1. он может показать точный результат, но как я могу добавить больше дополнительного кода во время подсчета? именно по этой причине я прошу решение для цикла.
2. Вы имеете в виду, что вам нужно выполнить определенную обработку во время подсчета? Неужели вы не можете сделать это после подсчета голосов ? Я не вижу, какое лечение нельзя было бы провести после подсчета голосов.
3. как вы можете, есть запись о времени, я хочу проверить временную дельту [0] между этими дублированными столбцами [1]
Ответ №4:
from collections import Counter
ele = [r[1] for r in log]
ele_counts = Counter(ele)
print(dict(ele_counts))
ВЫВОД
{'aaa': 2, 'def': 1, 'bbb': 2}
Комментарии:
1. Счетчик — это диктант. Нет необходимости снова упаковывать это в dict.
Ответ №5:
проверьте этот код
log = [[time1, 'aaa', '123.123.123.123'], [time2, 'def', '123.123.123.123'], [time3, 'aaa', '123.123.123.123'], [time4, 'bbb', '123.123.123.123'], [time5, 'bbb', '123.123.123.123']]
ans = [0,0,0]
for x in log:
if x[1] == 'aaa':
ans[0] = 1
elif x[1] == 'def':
ans[1] = 1
else:
ans[2] = 1
print(f'aaa: {ans[0]}ndef: {ans[1]}nbbb: {ans[2]}')
вы должны определить time1 ~ time5 перед проверкой кода