Проверка обеих клавиш:
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)
}
}
}
Необходимо получить "ключ" от строки.
def myKeyFunc( aString ):
stuff, x, label = aString.partition(' x ')
return label
aList.sort( key= myKeyFunc )
Как насчет:
lst.sort(key=lamdba s: s.split(' x ')[1])
Не зная, стандартизированы ли Ваши объекты в 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
Для этого необходимо реализовать пользовательское, сравните:
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)
Поскольку Вы пытаетесь отсортировать то, что чрезвычайно пользовательские данные, я пошел бы с пользовательским видом.