我有一条格言:
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。如果有否定的结果,我希望代码给我一个答案,但它只会给我一条错误。
您当前的逻辑是:
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
仅由零组成,则函数将跳过所有零(并返回None
(。
这可能是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