Python, сортируя список по ключу это - подстрока каждого элемента

Проверка обеих клавиш:

columnsOrRows, ok := mapped["columns"].([]interface{})
if !ok {
    columnsOrRows, ok = mapped["rows"].([]interface{})
}

if ok {
    for _, columnOrRow := range columnsOrRows {
        if columnOrRowValueIsString, ok = columnOrRow.(string); ok {
            columnOrRowArray = append(columnOrRowArray, columnOrRowValueIsString)
        }
    }
}
10
задан S.Lott 13 January 2009 в 20:24
поделиться

5 ответов

Необходимо получить "ключ" от строки.

def myKeyFunc( aString ):
    stuff, x, label = aString.partition(' x ')
    return label

aList.sort( key= myKeyFunc )
23
ответ дан 3 December 2019 в 16:11
поделиться

Как насчет:

lst.sort(key=lamdba s: s.split(' x ')[1])
10
ответ дан 3 December 2019 в 16:11
поделиться

Не зная, стандартизированы ли Ваши объекты в 1 цифре, 1 пространстве, 1 'x', 1 пространстве, несколько слов, я описал это:

mylist = [u'1 x Affinity for war', u'1 x Intellect', u'2 x Charisma', u'2 x Perception', u'3 x Population growth', u'4 x Affinity for the land', u'5 x Morale']
def sort(a, b):
  return cmp(" ".join(a.split()[2:]), " ".join(b.split()[2:]))

mylist.sort(sort)

Можно отредактировать парсинг в sort метод, но Вы, вероятно, получаете идею.

С наилучшими пожеланиями, Patrick

2
ответ дан 3 December 2019 в 16:11
поделиться

Для этого необходимо реализовать пользовательское, сравните:

def myCompare(x, y):
   x_name = " ".join(x.split()[2:])
   y_name = " ".join(y.split()[2:])
   return cmp(x_name, y_name)

Затем Вы используете, которые сравнивают определение как вход к Вашей функции вида:

myList.sort(myCompare)
1
ответ дан 3 December 2019 в 16:11
поделиться

Поскольку Вы пытаетесь отсортировать то, что чрезвычайно пользовательские данные, я пошел бы с пользовательским видом.

Сортировка слиянием
Пузырьковая сортировка
Quicksort

-10
ответ дан 3 December 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: