我有点困在这里,好像错过了什么。我需要计算一个图例的每一类相对于所列元素的词汇表的百分比。以下是我的内容:
Legend = {u'Conifer': 1.0, u'Hardwood': 4.0, u'Field': 5.0, u'Urban': 6.0, u'Water': 8.0}
PolyItems = {u'5423': [1.0, 2.0, 1.0, 4.0],
u'425': [6.0, 6.0, 6.0, 6.0, 8.0, 1.0, 6.0, 1.0, 4.0, 4.0, 4.0],
u'9756': [1.0, 1.0, 4.0],
u'6418': [4.0, 8.0, 1.0, 1.0]}
现在,我试图在Legend变量上做一个循环,并使用lambda函数来计算每个类的百分比,但是我总是得到每个项的0.0
。你知道吗
nb = lambda v, c: float(len([x for x in v if v==c]))
nbtot = lambda v: float(len(v))
for name, cla in Legend.iteritems():
result = {id: nb(vals, cla)/nbtot(vals) * 100
for id, vals in PolyItems.items() if len(id) > 0}
我可以使用lambda函数吗?有没有更好的方法来实现这一点?你知道吗
您正在将一个列表
v
与nb
中的一个浮点值c
进行比较,该浮点值总是返回False
,使函数为任何参数生成0.0
。你知道吗我不知道这个函数是用来做什么的,但我认为它应该被定义为:
我认为
nb
lambda的定义如下所示:输出:
注意:这两个lambda函数实际上不是必需的,因为Python有执行这些操作的内置函数。这意味着可以通过省略它们来简化代码,即以下代码将产生完全相同的输出:
相关问题 更多 >
编程相关推荐