Если у меня есть список списков a
, мне нужна функция f()
a = [[1,2,3],[1,2,3],[0,5,6],[0,5,4]]
что дает вывод:
out = f(a)
out
>> {[1,2,3]:2,[0,5,6]:1,[0,5,4]:1]}
Порядок тоже имеет значение, мне нужно, чтобы он был полностью похож
Я собирался использовать Counter
, но он не работает со списками. О наборах тоже не может быть и речи. Есть ли какой-то «более простой» метод, чем делать все с нуля, например, используя что-то вроде Counter
?
Вывод, который вы показываете, невозможен. Списки не хэшируются
@MadPhysicist ОП отметил это в вопросе.
@гмдс. Не совсем. OP подразумевает наличие кода, который выдает результат, но ничего не показывает.
@MadPhysicist Я понял, что OP сказал: «Это результат, который я ожидал бы, если бы Counter
мог принять lists
. Как я могу имитировать эту функциональность?».
Поскольку ключи словаря не могут иметь изменяемых объектов, вам нужно будет преобразовать их в кортеж (неизменяемый объект), а затем выполнить Counter
:
from collections import Counter
a = [[1,2,3],[1,2,3],[0,5,6],[0,5,4]]
print(Counter(map(tuple, a)))
Что выводит:
Counter({(1, 2, 3): 2, (0, 5, 6): 1, (0, 5, 4): 1})
Когда вы говорите «порядок имеет значение», вы имеете в виду, что
lists
в результате должны отображаться в том же порядке, что и во входных данных?