в алфавитном порядке перечислить списки файлов с атрибутами - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь перечислить в алфавитном порядке два списка.

Проблема в том, Сейчас я использую zip, чтобы сделать следующее:

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

for elt, (contenta, contentb) in enumerate(zip(lista, listb)):
    print('[{}] {}'.center(79).format(str(elt), contenta.name))
    print('[{}] {}'.center(79).format(str(elt), contentb))

Теперь проблема в том, что в lista есть переменная ".name", и это то, что я хотел бы напечатать, однако listb нет, и я хотел бы напечатать listb напрямую (конечно, lista и listb используются только в качестве примеров. )

Так что я бы хотел получить:

                                    [0] A                                    
                                    [1] B                                    
                                    [1] C                                    
                                    [2] D                                    
                                    [3] E                                    
                                    [4] F   
                                    [5] G  
                                    [6] R

Однако я получаю:

                                    [0] A                                    
                                    [0] C                                    
                                    [1] B                                    
                                    [1] D                                    
                                    [2] E                                    
                                    [2] F   
                                    [3] R  
                                    [3] G

Я не уверен, как мне это исправить? Есть ли способ сортировки и перечисления двух списков, сохраняя при этом число последовательным? И в то же время упорядочить его по алфавиту?

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

Сортировка lista + listb и enumerate по ним:

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

for i, x in enumerate(sorted(lista + listb)):
    print(i, x)

# 0 A
# 1 B
# 2 C
# 3 D
# 4 E
# 5 F
# 6 G
# 7 R
1 голос
/ 27 мая 2019

Он обрабатывается одновременно между элементами lista и listb, потому что вы используете zip.
Поэтому я рекомендую сначала составить списки из одного списка и отсортировать их по алфавиту.

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

listc = lista + listb
listc.sort()

for elt, content in enumerate(listc):
    print('[{}] {}'.center(79).format(str(elt), content))

Результат:

                                    [0] A                                    
                                    [1] B                                    
                                    [2] C                                    
                                    [3] D                                    
                                    [4] E                                    
                                    [5] F                                    
                                    [6] G                                    
                                    [7] R  
...