在C#中,如果你有一个可枚举的并尝试在其上调用.Single(),如果它中没有一个元素就会抛出错误。
是否有类似内置的Python内容?
var atLeastOneCategoryMissingEntities = _(this.list)
.pluck("items")
.map((m:any) => {
return _.pluck(m, "id");
})
.some((arr) => {
var val = _.difference(arr, this.anotherList);
return val.length === arr.length;
});
list:[
{
category:{
name: "",
id:""
},
items:[{
name:"",
id:""
}]
}
]
答案 0 :(得分:12)
不是内置的方法,但有一种惯用的方法来实现相同的目标:
如果(value,) = iterable
不包含任何一个元素, ValueError
会引发iterable
。
单个元素将存储在value
中,因此您的示例可以简化为:
(value,) = iterable
return value
解包是assignment operator的一项功能。
如果目标列表是以逗号分隔的目标列表:对象必须是与目标列表中的目标具有相同数量的项目的可迭代对象,并且项目从左到右分配到相应的目标。
答案 1 :(得分:4)
我不认为你可以简化它:
def single(iterable):
if len(iterable) != 1:
raise Error("...")
return iterable[0]