オブジェクトのリストをサブリストに分割したいのですが、同じ属性/特性を持つオブジェクトは同じサブリストにとどまります。次のように私たちは、その長さに基づいて文字列を分離したい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'を不要にすることがよくあります。 –