Подсчет списков и добавление в новый словарь (Python) - PullRequest
1 голос
/ 30 октября 2019

Я работаю со словарями, и мне было интересно, как я могу вывести словарь, где его ключ - это слово, которое встречается в данном словаре, а его значение - это количество раз, которое он встречается в этом словаре.

Скажем, например,

A = {'#1': ['Yellow', 'Blue', 'Red'], '#2': ['White', 'Purple', 'Purple', 'Red']}
B - []
for key in A:
    B.append(A[key])

>>> B
>>> [['Yellow', 'Blue', 'Red'], ['White', 'Purple', 'Purple', 'Red']]

После возврата соответствующих значений ключей теперь я могу перебирать каждый список строк и выравнивать список значений.

C = []
for sublist in B:
    for item in sublist:
        C.append(item)

Я знаючто мне нужно подсчитать, сколько раз определенные строки встречаются в этом списке, а затем заполнить словарь, ключом которого будет цвет, а значением - сколько раз он встречается. Эта часть в основном там, где у меня возникают трудности.

1 Ответ

5 голосов
/ 30 октября 2019

Вы можете использовать Counter объект:

>>> from collections import Counter
>>> c
['Yellow', 'Blue', 'Red', 'White', 'Purple', 'Purple', 'Red']
>>> Counter(c)
Counter({'Red': 2, 'Purple': 2, 'Yellow': 1, 'Blue': 1, 'White': 1})

Или создать свой собственный:

>>> d = {i: c.count(i) for i in c}
>>> d
{'Yellow': 1, 'Blue': 1, 'Red': 2, 'White': 1, 'Purple': 2}

Также вы можете создать c созданиекороче:

c = []
for i in A.values():
    c.extend(i)

>>> c
['Yellow', 'Blue', 'Red', 'White', 'Purple', 'Purple', 'Red']

или:

c = [j for i in A.values() for j in i]

>>> c
['Yellow', 'Blue', 'Red', 'White', 'Purple', 'Purple', 'Red']
...