我有一个看起来像这样的JSON对象:
[{'key1': 'yes', 'key2': 'yes', 'key3': 'yes'},
{'key1': 'yes', 'key2': 'no', 'key3': 'yes'},
{'key1': 'yes', 'key2': 'null', 'key3': 'yes'}]
当Key2的值不是,我试图计算Key1的出现次数,我可以使用它来按Key2中值Yes的出现对Key1进行排名。
答案 0 :(得分:2)
您可以使用sum()
:
>>> l = [
{"key1": "yes", "key2": "yes", "key3": "yes"},
{"key1": "yes", "key2": "no", "key3": "yes"},
{"key1": "yes", "key2": "null", "key3": "yes"}
]
>>> sum(item["key2"] != "yes" for item in l)
2
答案 1 :(得分:0)
我有另一个答案,它由'filter'和'len'实现:
const Task = require('data.task'); // folktale
const Either = require('data.either');
// eitherYayNay :: Bool → Either String String
const eitherYayNay = bool =>
bool ? Either.Right('yay') : Either.Left('nay');
// theTask :: Bool → Task Either a b
const theTask = yn =>
new Task((reject, resolve) => {
resolve(eitherYayNay(yn));
// reject();
});
// niceTask :: Bool → Task a b
// ???
// the desired result...
niceTask(something).fork(
err => {
// err could be the left value of the Task, or of the Either
},
val => {
console.log(val); // a string, not an Either
}
);
l = [
{"key1": "yes", "key2": "yes", "key3": "yes"},
{"key1": "yes", "key2": "no", "key3": "yes"},
{"key1": "yes", "key2": "null", "key3": "yes"}
]
f = filter(lambda x: x['key2']!='yes', l)
print f
print len(f)
输出过滤结果。 print f
将进一步输出过滤结果的编号。
print len(f)