Сортировать список A2 A4 A1 A3 до A1 A2 A3 A4 - PullRequest
0 голосов
/ 29 марта 2020

У меня есть список, который содержит такие элементы, как A2 A4 A1 A3 B1 B3 B4 A5 B2. Я хотел бы отсортировать его в список, который выглядит как A1 A2 A3 A4 A5, а затем B1 B2 B3 B4 et c ..

Я создал сценарий (железо python), который может быть шаг в правильном направлении, но я чувствую, что может быть более легкий путь. Мои вопросы:

  • Как мне отсортировать сжатый список, используя элементы в списке, созданном в e? Я еще не нашел способ сделать это. В текущем состоянии сценарий объединяет только элементы, начинающиеся с буквы A, но не в порядке нумерации c A1, A2, A3 и т.д. c ...
  • . Есть ли другой подход для сортировки список как описано?

Заранее спасибо, Ваутер Хилхорст

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

#The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
import re
output = []
n = 0
stramienen = IN[0]
gridcurves = IN[1]
var = True
b = []
c = []
e = []
for x in stramienen:
    def hasNumbers(inputString):
        return any(char.isdigit() for char in inputString)
    if (hasNumbers(stramienen[n])) == var:
        b.append(stramienen[n])
        c.append(gridcurves[n])
        e.append(re.findall('\d+',stramienen[n]))

    n=n+1
d=zip(b,c,e)
# take second element for sort
def takeSecond(elem):
    return elem[0][0]

# sort list with key
d.sort(key=takeSecond)

#Assign your output to the OUT variable.
OUT = d

1 Ответ

0 голосов
/ 29 марта 2020

sorted () используется для сортировки списка в Python

>>> mylist=["B3","A3","A4","B2","A2","B1","A1"]

>>> sorted(mylist)
['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3']

>>> for i in sorted(mylist): print(i)
... 
A1
A2
A3
A4
B1
B2
B3
>>>

Я чувствую, что вам нужно посетить несколько занятий в python. Пример:

- Определить метод ( def myfunction ) снаружи для l oop

- Сравнение для логических данных - True или False

def hasNumbers(inputString):
    return any(char.isdigit() for char in inputString)

for x in stramienen:
 if hasNumbers(stramienen[n])==True:
    b.append(stramienen[n])
    c.append(gridcurves[n])
    e.append(re.findall('\d+',stramienen[n]))

Надеюсь, это поможет. Удачи.

...