我想总结数据集,结合了唯一的密钥 (例如 - (曲目,歌手)。
例如:我有3个字段的数据集:track,singer,cnt 我想通过track& amp;汇总(汇总)数据。歌手,总结cnt领域。
sales = [
{'singer': 'Smash', 'track': 'Cry', 'cnt': 10},
{'singer': 'Smash', 'track': 'Cry', 'cnt': 11},
{'singer': 'Smash', 'track': 'Dry', 'cnt': 2},
{'singer': 'Scooter', 'track': 'Shy', 'cnt': 1},
{'singer': 'Scooter', 'track': 'Die', 'cnt': 0},
]
我想要:
sales = [
{'singer': 'Smash', 'track': 'Cry', 'cnt': 21}, <== summmarized
{'singer': 'Smash', 'track': 'Dry', 'cnt': 2},
{'singer': 'Scooter', 'track': 'Shy', 'cnt': 1},
{'singer': 'Scooter', 'track': 'Die', 'cnt': 0},
]
感谢您的回复。
答案 0 :(得分:1)
您基本上在寻找按<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Angular JS App</title>
</head>
<body>
<div class="container" ng-controller="HomeController as homeCtrl">
<div id="content">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
</div>
</body>
</html>
和Sum
分组的cnt
singer
。在Django中,可以使用track
和values
in conjunction来实现。
所以尝试这样的事情:
annotate
答案 1 :(得分:0)
创建了我自己的解决方案:
# Aggregate dataset by multiple columns
# @source http://stackoverflow.com/questions/24286933/how-to-reduce-aggregate-a-list-of-dicts-per-multiple-keys-in-python
sales = [
{'singer': 'Smash', 'track': 'Cry', 'cnt': 10},
{'singer': 'Smash', 'track': 'Cry', 'cnt': 11},
{'singer': 'Smash', 'track': 'Dry', 'cnt': 2},
{'singer': 'Scooter', 'track': 'Shy', 'cnt': 1},
{'singer': 'Scooter', 'track': 'Die', 'cnt': 0},
]
sales_gr = {}
for item in sales:
key = str(''.join([item['track'], item['singer']]))
if key not in sales_gr:
sales_gr[key] = {'track': item['track'], 'singer':item['singer'], 'cnt':0}
sales_gr[key]['cnt'] += item['cnt']
print(sales_gr)