Я хочу выделить список объектов в подсписках, где объекты с одинаковыми атрибутами/характеристиками остаются в одном подсписке.Python: как сгруппировать список объектов по их характеристикам или атрибутам?
Предположим, у нас есть список строк:
["This", "is", "a", "sentence", "of", "seven", "words"]
Мы хотим, чтобы отделить строки в зависимости от их длины следующим образом:
[['sentence'], ['a'], ['is', 'of'], ['This'], ['seven', 'words']]
Программа я в настоящее время придумывают находится этот
sentence = ["This", "is", "a", "sentence", "of", "seven", "words"]
word_len_dict = {}
for word in sentence:
if len(word) not in word_len_dict.keys():
word_len_dict[len(word)] = [word]
else:
word_len_dict[len(word)].append(word)
print word_len_dict.values()
Я хочу знать, есть ли лучший способ достичь этого?
Лучше, каким образом? Я лично не вижу проблем с этой реализацией (при условии, что это работает, я не проверял это) – FamousJameous
Поскольку ваши данные не отсортированы, вы нашли канонический метод.Вместо этого вы можете использовать 'word_len_dict = defaultdict (list)', поэтому вам не нужно продолжать тестирование, если ключ уже присутствует. Если ваши данные должны быть отсортированы уже, используйте 'itertools.groupby()'. –
Или используйте 'dict.setdefault()', что часто делает использование 'defaultdict' ненужным. –