как отсортировать список кортежей в python с разным размером и размером элемента - PullRequest
0 голосов
/ 29 января 2020

Может ли кто-нибудь помочь мне в сортировке ниже кортежа в Python?

({'b', 'c', 'a'}, {('b', 'c'), ('a', 'b')})

Ожидаемый результат:

({'a', 'b', 'c'}, {('a', 'b'), ('b', 'c')})

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Ваш заголовок и пример противоречивы. Вам следует обратиться к документации python по set , tuple и list

Некоторые примеры:

a_list = ['b', 'c', 'a']
a_tuple = ('b', 'c', 'a')
a_set = {'b', 'c', 'a'}
a_list_of_tuples = [('b', 'c', 'a'), ('b', 'c'), ('a', 'b')]
a_list_of_tuples_and_lists = [('b', 'c', 'a'), [('b', 'c'), ('a', 'b')]]

Этот пример работает как со списком списков / кортежей, так и с кортежем наборов / кортежей, однако он возвращает фактический список кортежей , а не кортеж наборов, как предусмотрено в ожидаемом выходном примере.

my_list = [('b', 'c', 'a'), [('b', 'c'), ('a', 'b')]]
print(tuple((sorted(item) for item in my_list)))
-> (['a', 'b', 'c'], [('a', 'b'), ('b', 'c')])

my_tuple = ({'b', 'c', 'a'}, {('b', 'c'), ('a', 'b')})
print(tuple((sorted(item) for item in my_tuple)))
-> (['a', 'b', 'c'], [('a', 'b'), ('b', 'c')])
0 голосов
/ 29 января 2020

Я предполагаю, что вы говорите о списке списков и хотите сначала отсортировать каждый список, а затем весь список списков.

Вы можете сделать это следующим образом:

arr = [['b','c','a'],['b','c'],['a','b']]

for i in arr:
    i.sort()

arr.sort(key=lambda x:x[0])

print(arr) 

[['a', 'b', 'c'], ['a', 'b'], ['b', 'c']]

Помните, что решение будет совершенно другим, если у вас есть кортеж сетов или наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...