Как написать список чисел в порядке возрастания, используя Python - PullRequest
0 голосов
/ 30 апреля 2018

у меня есть список

a1 = ['1', '5-10', '12', '18', '23', '100-110', '16-17', '20']

я хочу этот список элементов в порядке возрастания как

a1 = ['1','5-10','12','16-17','18','20','23','100-110']

пожалуйста, кто-нибудь, помогите мне организовать это

case = ['1', '5-10', '12', '18', '23', '100-110', '16-17', '20']
case1 = [i.split('-', 1)[0] for i in case]
case1 = [int(x) for x in case1]

case1.sort()

после печати регистр case1 равен

[1, 5, 12, 16, 18, 20, 23 ,100]

но я хочу, чтобы результат был похож на

[1, 5-10, 12, 16-17, 18, 20, 23, 100-110]

1 Ответ

0 голосов
/ 30 апреля 2018

, если вы уверены, что каждый элемент списка должен быть либо целочисленной строкой, либо составной строкой, разделенной тире, целыми числами, вы можете попробовать что-то вроде этого:

a_dict = {int(v.split('-')[0]): v for v in a}
final_a = [a_dict[k] for k in sorted(a_dict)]
print final_a

Возвращает

['1', '5-10', '12', '16 -17 ',' 18 ',' 20 ',' 23 ',' 100-110 ']

...