По какой формуле найти лидера у кого больше всего объявлений

У меня есть база телефонных номеров с 3 разных сайтов, где выставляют объявления. К примеру, есть номер телефона, и напротив него - ссылки на сайты, где висят объявления:

+7(999)888-88-88 [1 сайт: 3 объявления, 2 сайт: 0 объявлений, 3 сайт: 0 объявлений]

Как определить лидера?

with open("D:\\SSDTEMP\\download\\Python_work\\звонки\\чс.txt", "r") as f3:
ff = {i[:18]: i[19:-1].split() if i[19:-1] else set() for i in f3.readlines()}

bb={}

for i, i2 in ff.items():
    if i2:
       bb[i]=dict()
       for k in i2:
          if "don-m" in k:
              bb[i]["don-m"] = bb[i].get("don-m", 0) + 1
          if "rusdosug" in k:
              bb[i]["rusdosug"] = bb[i].get("rusdosug", 0) + 1
          if "ashoo" in k:
              bb[i]["ashoo"] = bb[i].get("ashoo", 0) + 1

Ответы (1 шт):

Автор решения: geo

Если телефон в наборе - это уникальный элемент в наборе, то как вариант вот так:

data_for_file =['+7(999)888-88-88 [1 сайт: 4 объявления, 2 сайт: 1 объявлений, 3 сайт: 30 объявлений]'+'\n',
                '+7(999)888-88-89 [1 сайт: 5 объявления, 2 сайт: 0 объявлений, 3 сайт: 1 объявлений]'+'\n',
                '+7(999)888-88-87 [1 сайт: 10 объявления, 2 сайт: 0 объявлений, 6 сайт: 0 объявлений]'
                ]

with open('task1611413.txt','tw+') as fl:
    fl.writelines(data_for_file)

dct = {}
dct_total = {}
with open('task1611413.txt') as fl:
    for i in fl:
        lst = i.rstrip('\n').split('[')
        lst_ = [j.split(':') for j in lst[1][:-1].split(',')]

        dct.clear()
        for d in lst_:
            k = int(d[0].strip(' ').split(' ')[0].strip(' '))
            val = int(d[1].strip(' ').split(' ')[0].strip(' '))
            dct.setdefault(k,0)
            dct[k] = dct[k] + val
        dct_total[lst[0].rstrip(' ')] = dct.copy()


result = (None,0)
for item in dct_total.items():
    if sum(item[1].values())>result[1]:
        result = (item[0],sum(item[1].values()))

print(result)
→ Ссылка