我有以下形式的词典列表:
lst = [{"Name":'Nick','Hour':0,'Value':2.75},
{"Name":'Sam','Hour':1,'Value':7.0},
{"Name":'Nick','Hour':0,'Value':2.21},
{'Name':'Val',"Hour":1,'Value':10.1},
{'Name':'Nick','Hour':1,'Value':2.1},
{'Name':'Val',"Hour":1,'Value':11},]
Run Code Online (Sandbox Code Playgroud)
我希望能够为特定小时的名称汇总所有值,例如,如果Name == Nick and Hour == 0,我希望值给出符合条件的所有值的总和.2.75 + 2.21,根据上面的部分.
我已经尝试了以下但是它并没有帮助我解决这两个问题.
finalList = collections.defaultdict(float)
for info in lst:
finalList[info['Name']] += info['Value']
finalList = [{'Name': c, 'Value': finalList[c]} for c in finalList]
Run Code Online (Sandbox Code Playgroud)
这总结了特定的所有值Name,而不是检查它是否Hour相同.如何将该条件合并到我的代码中?
我的预期产量:
finalList = [{"Name":'Nick','Hour':0,'Value':4.96},
{"Name":'Sam','Hour':1,'Value':7.0},
{'Name':'Val',"Hour":1,'Value':21.1},
{'Name':'Nick','Hour':1,'Value':2.1}...]
Run Code Online (Sandbox Code Playgroud) 我有以下形式的汇总查询
db.mycollection.aggregate([
{
"$match":
{
"Time": { $gte: ISODate("2016-01-30T00:00:00.000+0000") }
}
},
{
"$group":
{
"_id":
{
"day": { "$dayOfYear": "$Time" },
"hour": { "$hour": "$Time" }
},
"Dishes": { "$addToSet": "$Dish" }
}
},
{
"$group":
{
"_id": "$_id.hour",
"Food":
{
"$push":
{
"Day": "$_id.day",
"NumberOfDishes": { "$size":"$Dishes" }
}
}
}
},
{
"$project":
{
"Hour": "$_id",
"Food": "$Food",
"_id" : 0
}
},
{
"$sort": { "Hour": 1 }
}
]);
Run Code Online (Sandbox Code Playgroud)
与其在一小时内执行上述操作,例如 0-1,1-2,2-3,3-4,4-5,...,23-24,我希望能够在两小时内完成此操作持续时间。例如 0-2,2-4,4-6,...,22-24。有没有办法做到这一点?
我有以下一段代码可以输出到 csv。
import csv
keys = ['Name','Hour','Time']
dirname = os.path.dirname(os.path.abspath(__file__))
csvfilename = os.path.join(dirname, 'CSVFile.csv')
with open(csvfilename, 'wb') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(final)
Run Code Online (Sandbox Code Playgroud)
其中final是以下形式的字典列表
final = [{'Name':'A','Hour':0,'Time':120},{'Name':'A','Hour':1,'Time':219},...,{'Name':'B','Hour':0,'Time':10},...]
Run Code Online (Sandbox Code Playgroud)
如何将 Final 输出为 .tsv 格式?
def get_data(key, region, *ids):
url = "https://www.googleapis.com/youtube/v3/videos?part=snippet&id={ids}&key={api_key}"
r = requests.get(url.format(ids=",".join(ids), api_key=key))
js = r.json()
items = js["items"]
cat_js = requests.get("https://www.googleapis.com/youtube/v3/videoCategories?part=snippet®ionCode={}&key={}".format(region,
key)).json()
categories = {d['id']: d["snippet"]['title'] for d in cat_js["items"]}
for item in items:
yield item["snippet"]["title"], categories[item["snippet"]["categoryId"]]
Run Code Online (Sandbox Code Playgroud)
我有上面的功能来获取youtube类别和视频名称.有没有办法获得音乐视频的类型,如流行,摇滚,众议院等?请帮忙!