我有以下列表
let basedataset = {}
let ajaxbase = {};
//setting api Urls
apiinterface();
function apiinterface() {
ajaxbase.createuser = '/api/createuser'
}
//setting up payload for post method
basedataset.email = profile.getEmail()
basedataset.username = profile.getGivenName()
//setting up url for api
ajaxbase.url = ajaxbase.createuser
ajaxbase.payload = basedataset;
//reusable promise based approach
basepostmethod(ajaxbase).then(function(data) {
console.log('common data', data);
}).catch(function(reason) {
console.log('reason for rejection', reason)
});
//modular ajax (Post/GET) snippets
function basepostmethod(ajaxbase) {
return new Promise(function(resolve, reject) {
$.ajax({
url: ajaxbase.url,
method: 'post',
dataType: 'json',
data: ajaxbase.payload,
success: function(data) {
resolve(data);
},
error: function(xhr) {
reject(xhr)
}
});
});
}
并且只想返回键等于某个值的值的总和。例如。键等于6的值之和为0.3。我认为以下内容可行:
a = [(1:0.4), (6:0.15), (6:0.15), (7:0.1)]
任何有关正确语法的建议都会受到赞赏。
答案 0 :(得分:2)
我假设您实际上有一个dicts列表,而不是原始问题中python中不存在的任何奇怪的数据结构
a = [{1:0.4}, {6:0.15}, {6:0.15}, {7:0.1}]
from collections import defaultdict
sums = defaultdict(int)
for data_dict in a:
for k,v in data_dict.items():
sums[k] += v
print sums
答案 1 :(得分:0)
我相信这就是你要找的东西:
a = [[1,0.4], [6,0.15], [6,0.15], [7,0.1]]
sumvalue = 0
for b in a:
if b[0] == 6:
sumvalue += b[1]
在任何情况下,您在问题中呈现的列表都不存在。
如果某些东西不起作用,通常最好采取较小的步骤。
编辑:根据您的数据结构最终的样子,上面的答案可能会更好。
答案 2 :(得分:0)
a = [(1:0.4), (6:0.15), (6:0.15), (7:0.1)]
是非法的python表达式。
你的意思是a = [{1:0.4}, {6:0.15}, {6:0.15}, {7:0.1}]
。
如果是,那么sum([item[6] for item in a if list(item.keys())==[6]])