小编Bla*_*ber的帖子

如果两个其他键值对匹配,则为字典列表的Python和值

我有以下形式的词典列表:

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)

python

6
推荐指数
2
解决办法
905
查看次数

Mongodb 每两小时聚合一次

我有以下形式的汇总查询

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。有没有办法做到这一点?

mongodb mongodb-query aggregation-framework

2
推荐指数
1
解决办法
994
查看次数

将词典列表保存到 .tsv 文件

我有以下一段代码可以输出到 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 格式?

python python-2.7

2
推荐指数
1
解决办法
6404
查看次数

从youtube ID获取流派

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&regionCode={}&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类别和视频名称.有没有办法获得音乐视频的类型,如流行,摇滚,众议院等?请帮忙!

python youtube

0
推荐指数
1
解决办法
571
查看次数