[英]How to make python stop looking if there is a negative value?
我有一个字典:
ff = {("Tom Brady",45678 ): [[456.0, 4050.0], [0.32, 5.6]]}
和
f = {("Tom Brady",45678 ): [[456.0, 4050.0, -1000.0], [0.32, 5.6, 4.56]]}
我有这个代码:
def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int
for a in client_list[client][0]:
if a>0:
return 2
if a<0
return 1
这段代码的问题是,当没有负值时,python 给我一个错误,告诉我它不能是 NoneType。 如果有否定,我希望代码给我一个答案,但它只会给我一个错误。
您可以将列表列表(字典中的值)制作成一个大列表,然后使用列表推导创建一个仅包含负数的新列表。 如果此列表理解结果的长度大于 0,则您的字典值中的任何列表中都有负数。
def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int:
big_list = sum(client_list[client], [])
negatives = [i for i in big_list if i < 0]
if len(negatives) > 0:
return True
return False
( sum
是从列表列表中创建一个列表的小技巧)。
根据评论; 如果您只需要知道是否有负数(并且您永远不需要知道它们是什么数字),您可以简化:
def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int:
big_list = sum(client_list[client], [])
for i in big_list:
if i < 0:
return True
return False
您当前的逻辑是:
def help_find_neg(lst: list[float]):
for element in lst:
if element > 0:
return 2
if element < 0:
return 1
# and if element == 0: go to the next element
如果您的lst
仅包含零,则 function 将跳过所有这些(并返回None
)。
这可能是您的NoneType
错误背后的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.