答案的問題的列表:搜索鍵,值在字典
一些幫助後,我意識到,這是突破,因爲它是通過電子郵件和當一個電子郵件掃描會有什麼我一直在尋找其餘的都沒有,從而導致它破裂。
添加一個Try/Except解決了這個問題。只是爲了歷史的緣故,任何其他人都在尋找類似的問題,這是有效的代碼。
try:
if (item for item in list_of_dict if item['name'] == "From" and item['value'] == 'NAME1 <[email protected]_email.com>').next():
print('has it')
else:
pass
except StopIteration:
print("Not found")
這樣它能夠通過每個電子郵件進行掃描,並有錯誤處理,如果它打破了,但如果它發現它能夠打印,我發現我一直在尋找。
原題:
代碼:
if (item for item in list_of_dict if item['name'] == "From" and item['value'] == 'NAME1 <[email protected]_email.com>').next()
我得到一個StopIteration
錯誤:
Traceback (most recent call last):
File "quickstart1.py", line 232, in <module>
main()
File "quickstart1.py", line 194, in main
if (item for item in list_of_dict if item['name'] == "From" and item['value'] == 'NAME1 <[email protected]_email.com>').next():
StopIteration
這是我的代碼:
if (item for item in list_of_dict if item['name'] == "From" and item['value'] == 'NAME1 <[email protected]_email.com>').next():
print('has it')
else:
print('doesnt have it')
當我檢查,看看是否我在迭代器錯誤推杆,我做了一個查找的項目[「值」]:
print((item for item in list_of_dict if item['name'] == "From").next())
返回:
{u'name': u'From', u'value': u'NAME1 <[email protected]_email.com>'}
{u'name': u'From', u'value': u'NAME2 <[email protected]_email.com>'}
當發電機沒有匹配值時,會產生'StopIteration'。你必須使用'try/except'方法。 –
謝謝!沒有意識到這就是stopIteration的意思! –
你可以壓縮你的問題,幷包括一個[mcve] _without_編輯,並清楚地解釋你的輸入和預期輸出? – MSeifert