也许这样的事情:
x=0
if isinstance(a,(dict,list,tuple)):
x=sum(similarity(i,j) for i in a for j in b)
要么:
x=(sum(similarity(i,j) for i in a for j in b) if isinstance(a,(dict,list,tuple))
else 0)
或者(假设字符串,集合或其他一些迭代类型不会因某种原因而破坏您的功能):
try:
x=sum(similarity(i,j) for i in a for j in b)
except TypeError:
x=0
如果你专门测试一下是否可以迭代,你可以这样做:
from collections import Iterable
if isinstance(e, Iterable):
...
如果有一些您不想要的迭代类型,请对这些类型做出反应:
if isinstance(e, Iterable) and not isinstance(el, str):
# an iterable that is not a string...