У меня есть Dict, который идет что-то вроде этого:Определения значений, которые имеют максимальное количество ключей
ip = { "1" : ['a','b'],
"2" : ['a','c'],
"3" : ['a','b','c','d'],
"4" : ['a','b','d','e']}
мне нужно найти какие из элементов в наборах значений имеет максимальное количество ключей от них и также имеют предметы, перечисленные в порядке убывания. Вывод будет что-то вроде:
op = {"a":4,"b":3,"c":2,"d":2,"e":1}
Но я где-то читал, что ДИКТ не может быть в отсортированном моде, поэтому вывод может быть кортеж тоже:
op = [('a', 4), ('b', 3), ('c', 2), ('d', 2), ('e', 1)]
Мы можем перебирать Dict и для каждого из элементов в значении, установленном приращением, результат равен defaultdict
для этого элемента.
op = defaultdict(int)
for k,v in ip.iteritems():
for item in v:
op[item]+=1
op = sorted(op.items(), key=lambda x: x[1], reverse=True)
Есть ли более быстрый/лучший способ сделать это, чем вложенный?
Можете ли вы представить свой ожидаемый результат для примера? –
добавил желаемый результат. – nektar
Существует такая вещь, как упорядоченный словарь ... 'из коллекции import OrderedDict'. –