У меня есть список, содержащий тысячи подсписков. Каждый из этих подсписков содержит комбинацию смешанных строк и логических значений, например:
lst1 = [['k', 'b', False], ['k', 'a', True], ['a', 'a', 'a'], ['a', 'b', 'a'], ['a', 'a' , False], ...]
Я хочу отсортировать этот список в соответствии с содержимым подсписков, например:
lst2 = [['a', 'a', 'a'], ['a', 'a' , False], ['a', 'b', 'a'], ['k', 'a', True], ['k', 'b', False], ...]
Я пытался отсортировать это так:
lst2 = sorted([list(sorted(x)) for x in lst1])
print(lst2)
Это не работает из-за комбинации логических значений со строками в некоторых полях, поэтому я получаю TypeError: '<' not supported between instances of 'bool' and 'str'
.
Я также попробовал метод грубой силы, создавая каждую возможную комбинацию и затем проверяя их, чтобы увидеть, есть ли в первом списке:
col1 = ['a', 'b', 'c', d, e, f, g, h, i, j, k, ..., True, False]
col2 = ['a', 'b', 'c', d, e, f, g, h, i, j, k, ..., True, False]
col3 = ['a', 'b', 'c', d, e, f, g, h, i, j, k, ..., True, False]
lst2 = list()
for t1 in col1:
for t2 in col2:
for t3 in col3:
test_sublist = [t1, t2, t3]
if test_sublist in lst1:
lst2.append(test_sublist)
Этот способ работает достаточно хорошо, потому что я Я могу автоматически создавать отсортированные списки для каждого столбца, col 1
, col 2
и col 3
, но это занимает слишком много времени для запуска (более 3 дней).
Есть ли лучше решение для сортировки смешанных строковых / логических списков, как эти?