リストの辞書があり、各リストは 50 項目を超えています。簡単にするために、辞書のキーが ['a','b','c'] であるとします。私は、これらのリストを並べ替えてスライスすることが非常にpythonicであることを理解しようと長い間費やしました。私がこれまでに持っているもの:
dict = dictionary_of_lists under discussion
[dict[k].sort(reverse=True) for k in dict.keys()]
for k, l in dict.items():
slice = 10 if k in ('a','c') else 20
dict[k] = l[:slice]
必要に応じて、並べ替えられ、トリミングされたリストになります。[dict[k].sort(reverse=True) for k in dict.keys()]
しかし、私が欲しかったのは、並べ替えられたリストに対してスライスするときのような 1 行のコードでした。そして、誰かが分類とスライスを組み合わせる方法を理解できるなら、彼らは私のヒーローです.
更新: まず、多少複雑な質問をすることができるのが好きです。なぜなら、それらはより良いコーディング スキルを学ぶのに役立つからです (私は独学なので)。それでは、以下の皆さんに感謝します!私の新しいコード:
for c in list_of_categories:
list = [getattr(p,c.name) for p in people if hasattr(p,c.name)]
slice = c.get_slice_value # I added an @property function to a class named `Category`
c.total = sum(sorted(list, reverse=True)[:slice])