Как создать частотный словарь со списком значений в Python 3.6 - PullRequest
1 голос
/ 21 ноября 2019

Я пытаюсь написать функцию в Python 3.6, которая возвращает словарь с количеством элементов, являющимся ключом, и список элементов с таким количеством.

Вот пример того, как должен выглядеть тестовый примернапример: Вход: {'x': 3, 'y': 3, 'z': 100} Выход: {3: ['x', 'y'], 100: ['z']}

Это то, что у меня есть для кода:

def get_count_items(key_count):
    # create blank dictionary
    count_items = {}
    #for each item_key in key_count:
    for item_key in key_count
    # retrieve its value (which is a count)
    # if the count (as key) exists in count_items:
    if item in count_items:
        count_items[item] += 1
    # append the item_key to the list
    # else:
    #add the count:[item_key] pair to count_items dictionary
    else:
        count_items[item] = 1

    for key, value in count_items.items():
    #return count_items dictionary
        return count_items

Мои вопросы здесь, как я могу установить каждое из значений счетчика в качестве ключей, и как я могу сделать соответствующий список каждого элемента, который имеетчто считать?

Спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 21 ноября 2019
from collections import defaultdict

d = {'x':3, 'y':3, 'z':100} 

# create defaultdict with list type. 
res = defaultdict(list)

# iterate over key value pair
for k, v in d.items():
    res[v].append(k)
print(res)
# or
print(dict(res))

вывод:

defaultdict(<class 'list'>, {3: ['x', 'y'], 100: ['z']})
{3: ['x', 'y'], 100: ['z']}
0 голосов
/ 21 ноября 2019

попробуйте это:

d = {'x':3, 'y':3, 'z':100} 
x={}
for key, value in sorted(d.items()): 
    x.setdefault(value, []).append(key) 

x
{3: ['x', 'y'], 100: ['z']}

0 голосов
/ 21 ноября 2019

Попробуйте это:

a = {'x':3, 'y':3, 'z':100}
d = {}
for x in a:
    if a[x] in d:
        d[a[x]].append(x)
    else:
        d[a[x]]=[x]
print(d)
...