<p>您可以使用python内置函数<code>min</code>和<code>max</code>以及它们的<code>key</code>参数,在给定键条件的情况下,查找列表中的最小/最大值。作为函数编写,它可以如下所示:</p>
<pre class="lang-py prettyprint-override"><code>def polarity_diffs(sentiments):
diffs = []
for row in sentiments:
smallest = min(row, key=lambda s: s.polarity).polarity
biggest = max(row, key=lambda s: s.polarity).polarity
diffs.append(biggest - smallest)
return diffs
</code></pre>
<p>给定一个虚拟物体和一些测试数据-</p>
<pre class="lang-py prettyprint-override"><code>class Sentiment: # Example class
def __init__(self, polarity, subjectivity):
self.polarity = polarity
self.subjectivity = subjectivity
test_data = [
# normal values
[Sentiment(polarity=0.35, subjectivity=0.65),
Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.6, subjectivity=0.87),
Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.0, subjectivity=0.0)],
# more normal values
[Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.5, subjectivity=0.8),
Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=-0.29, subjectivity=0.54),
Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.25, subjectivity=1.0)],
# only a single entry
[Sentiment(polarity=0.35, subjectivity=0.65)],
# multiple entries, but identical
[Sentiment(polarity=0.0, subjectivity=0.0),
Sentiment(polarity=0.0, subjectivity=0.0)]
]
</code></pre>
<p>-结果如下:</p>
<pre class="lang-py prettyprint-override"><code>for diff in polarity_diffs(x):
print(diff)
0.6 # normal values
0.79 # more normal values
0.0 # only a single entry
0.0 # multiple entries, but identical
</code></pre>