【Python】辞書の重複した値のキーの数を取得する
例えば、次のようなモデルがあったときに、毎日いくつのデータが作られたのか知りたい。
そんな時に、defaultdict
が便利だった。
class Test(models.Model):
class Meta:
db_table = "test"
id = models.UUIDField( default=uuid.uuid4, primary_key=True, editable=False )
dt = models.DateTimeField(verbose_name="",default=timezone.now)
test = models.CharField(verbose_name="", max_length=50)
from collections import defaultdict
test = Test.objects.all()
dic = { t:t.dt.date() for t in test }
d = defaultdict(list)
for k, v in dic.items():
d[v].append(k)
//リストの場合
result_list = [ (k, len(v)) for k,v in d.items()]
print(result_list)
//結果 [(datetime.date(2022, 8, 13), 1), (datetime.date(2022, 8, 7), 4), (datetime.date(2022, 8, 6), 3)]
//辞書の場合
result_dict = { k:len(v) for k, v in d.items() }
print(result_dict)
//結果 {datetime.date(2022, 8, 13): 1, datetime.date(2022, 8, 7): 4, datetime.date(2022, 8, 6): 3}
参考記事
お薦め動画