Так вот структура моего дефолта

#x = {lead_id:[[month,pid,year]]
x={'123':[[1,9,2015],[2,9,2015]],'345':[[2,10,2015],[2,13,2014]],'159':[1,3,2015].....}

У меня есть более 1000 lead_id в этом словаре. Каждый из них имеет случайное количество списков. Другими словами, тот же lead_id имеет дубликаты, но с разным месяцем, pid или годом. Теперь я хочу посчитать все lead_id в январе 2015 года. Я хочу посчитать его как два, если его два раза или больше, в зависимости от его появления. Может кто-нибудь, пожалуйста, помогите мне выяснить, как я могу сделать автоматизированный код, чтобы он проверил длину, а также количество раз, что месяц с тем же годом произошел.

For example:
x={'123':[[1,3,2015],[2,5,2014],[1,5,2015]],'987':[[3,55,2014]],'456':[[1,37,2015]]}
count of jan 2015 = 3
1
Shubham 15 Дек 2015 в 20:42

3 ответа

Лучший ответ

Вы можете сделать условия на значения индекса. date[0] - 1 на январь. date[2] - 2015

#!/usr/bin/python

x={'123':[[1,3,2015],[2,5,2014],[1,5,2015]],'987':[[3,55,2014]],'456':[[1,37,2015]]}

#Set query dates
query_month = 1 #jan
query_year = 2015 #year

#Set a counter
jan_counts = 0
for list_of_dates in x.values():
    for date in list_of_dates:
        if (date[0] == query_month) and (date[2] == query_year): 
            jan_counts += 1
print jan_counts
#3
2
O.rka 15 Дек 2015 в 18:04

Это должно дать ваш результат:

>>> day = 1
>>> year = 2015
>>> x = {'123':[[1,3,2015],[2,5,2014],[1,5,2015]],'987':[[3,55,2014]],'456':[[1,37,2015]]}
>>> sum([1 for k, v in x.iteritems() for i in v if i[0] == day and i[2] == year])
3
1
Rohit Jain 15 Дек 2015 в 17:57

Вы можете использовать это также ...

sum(1 for i in x for j in x[i] if j[0] == 1 and j[2] == 2015)
5
Padraic Cunningham 15 Дек 2015 в 18:10