vic57
примерно так
Не получается. Дело в том, что вот эта строка:
groupby(lst,key = lambda x: (x[0],x[1],x[2]))
будет стабильно выдавать нужный результат только в том случае, если значения в словарях будут всегда идти в том же порядке, что и при создании списка словарей, ведь группировка идет по инексам, а не по ключам. Но, так как словарь не упорядочен - каждый раз словари выводятся упорядоченными по-разному. Вот как у меня получалось. Был взят участок кода только с сортировкой:
l = [
{'key1': 'home', 'key2': 'word', 'key3': 'that', 'key4': 842268745},
# не уникален, у эл-та с индексом 3 такие же значения:
{'key1': 'secret', 'key2': 'terrible', 'key3': 'phone', 'key4': 654},
{'key1': 'aback', 'key2': 'tippy', 'key3': 'fireworks', 'key4': 123},
# не уникален, у эл-та с индексом 1 такие же значения:
{'key1': 'secret', 'key2': 'terrible', 'key3': 'phone', 'key4': 23689633},
{'key1': 'murage', 'key2': 'sweep', 'key3': 'transmit', 'key4': 9875},
# не уникален, у эл-тов с индексами 8 и 9 такие же значения:
{'key1': 'beagle', 'key2': 'cloistral', 'key3': 'close', 'key4': 632125},
{'key1': 'cognitive', 'key2': 'coin', 'key3': 'jubilant', 'key4': 96},
{'key1': 'keel', 'key2': 'lately', 'key3': 'serf', 'key4': 622144},
# не уникален, у эл-тов с индеками 1 и 9 такие же значения:
{'key1': 'beagle', 'key2': 'cloistral', 'key3': 'close', 'key4': 77},
# не уникален, у эл-тов с индексами 1 и 8 такие же значения:
{'key1': 'beagle', 'key2': 'cloistral', 'key3': 'close', 'key4': 253},
]
lst = sorted([list(i.items()) for i in l])
for elem in lst:
print(elem)
Каждый раз получившиеся кортежи выдавались упорядоченными по разному, например, первый случай (key1, key2, key4, key3):
[('key1', 'aback'), ('key2', 'tippy'), ('key4', 123), ('key3', 'fireworks')]
[('key1', 'beagle'), ('key2', 'cloistral'), ('key4', 77), ('key3', 'close')]
[('key1', 'beagle'), ('key2', 'cloistral'), ('key4', 253), ('key3', 'close')]
[('key1', 'beagle'), ('key2', 'cloistral'), ('key4', 632125), ('key3', 'close')]
[('key1', 'cognitive'), ('key2', 'coin'), ('key4', 96), ('key3', 'jubilant')]
[('key1', 'home'), ('key2', 'word'), ('key4', 842268745), ('key3', 'that')]
[('key1', 'keel'), ('key2', 'lately'), ('key4', 622144), ('key3', 'serf')]
[('key1', 'murage'), ('key2', 'sweep'), ('key4', 9875), ('key3', 'transmit')]
[('key1', 'secret'), ('key2', 'terrible'), ('key4', 654), ('key3', 'phone')]
[('key1', 'secret'), ('key2', 'terrible'), ('key4', 23689633), ('key3', 'phone')]
второй случай (key3, key1, key4, key2):
[('key3', 'close'), ('key1', 'beagle'), ('key4', 77), ('key2', 'cloistral')]
[('key3', 'close'), ('key1', 'beagle'), ('key4', 253), ('key2', 'cloistral')]
[('key3', 'close'), ('key1', 'beagle'), ('key4', 632125), ('key2', 'cloistral')]
[('key3', 'fireworks'), ('key1', 'aback'), ('key4', 123), ('key2', 'tippy')]
[('key3', 'jubilant'), ('key1', 'cognitive'), ('key4', 96), ('key2', 'coin')]
[('key3', 'phone'), ('key1', 'secret'), ('key4', 654), ('key2', 'terrible')]
[('key3', 'phone'), ('key1', 'secret'), ('key4', 23689633), ('key2', 'terrible')]
[('key3', 'serf'), ('key1', 'keel'), ('key4', 622144), ('key2', 'lately')]
[('key3', 'that'), ('key1', 'home'), ('key4', 842268745), ('key2', 'word')]
[('key3', 'transmit'), ('key1', 'murage'), ('key4', 9875), ('key2', 'sweep')]
Ну и так далее.
Но в любом случае спасибо, уже есть вероятность, что смогу довести ваш пример до рабочего состояния