我遇到了以下問題,下面是我的代碼。基本上我有一個ID和相應的權重對象的列表,我有另一個ID列表。我只想使用與第二個列表中的id匹配的對象的權重。Python字符串/浮點比較
d_weights = [{'d_id':'foo', 'weight': -0.7427}, ...]
d_ids = ['foo', ...]
for dtc_id in d_ids:
d_weight = next((d['weight'] for d in d_weights if d['d_id'] == dtc_id), "")
print str(d_weight)
if str(d_weight) != "":
print "not empty string! "+str(d_weight)
這個輸出是:
-0.7427
0.0789
-0.0039
-0.2436
-0.0417
not empty string! -0.0417
爲什麼只有最後一個不爲空時,我可以打印出來罰款,他們顯然不等於一個空字符串?在使用之前,我如何檢查next()
實際返回了什麼?
看起來如果在['foo',..]]中的d ['d_id']中使用'for [d ['weight'] for d in d_weights,可能更容易循環:' –
@appel Kindly爲'd_weights'和'd_ids'添加完整的數據集。 – anand
我無法發佈d_weights和d_ids的完整數據集(方式太長),我給出了數據集的表示形式。我怎麼可能在if語句之前打印'd_weight',並且與空字符串的比較不計算True? – appel