У меня есть список строк, которые я хочу сгруппировать по их суффиксу, а затем распечатать значения по правому краю, добавив пробелы в левую сторону.
Как это можно сделать с помощью pythonic?
Мой текущий код:
def find_pos(needle, haystack):
for i, v in enumerate(haystack):
if str(needle).endswith(v):
return i
return -1
# Show only Error and Warning things
search_terms = "Error", "Warning"
errors_list = filter(lambda item: str(item).endswith(search_terms), dir(__builtins__))
# alphabetical sort
errors_list.sort()
# Sort the list so Errors come before Warnings
errors_list.sort(lambda x, y: find_pos(x, search_terms) - find_pos(y, search_terms))
# Format for right-aligning the string
size = str(len(max(errors_list, key=len)))
fmt = "{:>" + size + "s}"
for item in errors_list:
print fmt.format(item)
Альтернатива, которую я имел в виду:
size = len(max(errors_list, key=len))
for item in errors_list:
print str.rjust(item, size)
Я все еще изучаю Python, поэтому другие предложения по улучшению кодатоже приветствуется.