Python:在满足条件的情况下向字典添加列表项
我尝试添加数字之间的差异,直到总差异>20,将数字附加到一个列表中,该列表成为一个字典值,其中键是数字集。我现在得到一个超出范围的错误列表 输出应该是多个字典条目,其列表差异加起来最接近的数字<20Python:在满足条件的情况下向字典添加列表项,python,list,loops,dictionary,Python,List,Loops,Dictionary,我尝试添加数字之间的差异,直到总差异>20,将数字附加到一个列表中,该列表成为一个字典值,其中键是数字集。我现在得到一个超出范围的错误列表 输出应该是多个字典条目,其列表差异加起来最接近的数字
number_set = 1
number_dict = {}
num_list = [1, 3, 5, 9, 18, 20, 22, 25, 27, 31]
incl_num_list = []
total = 0
for x in range(1, len(num_list)):
if total < 20:
total = total + (num_list[x+1] - num_list[x])
incl_num_list.append(num_list[x])
else:
number_dict.update({km: num_list})
km += 1
incl_num_list = []
total = 0
for k, v in number_dict.items():
print k
print v
首先,在分配给任何对象之前,您正在使用
km
Traceback (most recent call last):
File "<pyshell#29>", line 15, in <module>
number_dict.update({km: num_list})
NameError: name 'km' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第15行,在
数字目录更新({km:num\u list})
NameError:未定义名称“km”
正如ndpu所指出的,您的最后一个x将超出您的数值列表的范围。首先,您正在使用
km
进行分配
Traceback (most recent call last):
File "<pyshell#29>", line 15, in <module>
number_dict.update({km: num_list})
NameError: name 'km' is not defined
num_list = [1, 3, 5, 9, 18, 20, 22, 25, 27, 31]
overflow = 20
total = 0
key = 1
number_dict = {1: [1]}
for left, right in zip(num_list[:-1], num_list[1:]):
total += right - left
if total >= overflow:
key += 1
number_dict[key] = [right]
total = 0
else:
number_dict[key].append(right)
for k, v in sorted(number_dict.items()):
print k
print v
回溯(最近一次呼叫最后一次):
文件“”,第15行,在
数字目录更新({km:num\u list})
NameError:未定义名称“km”
正如ndpu所指出的,您的最后一个x将超出您的数值列表的范围。首先,您正在使用
km
进行分配
Traceback (most recent call last):
File "<pyshell#29>", line 15, in <module>
number_dict.update({km: num_list})
NameError: name 'km' is not defined
num_list = [1, 3, 5, 9, 18, 20, 22, 25, 27, 31]
overflow = 20
total = 0
key = 1
number_dict = {1: [1]}
for left, right in zip(num_list[:-1], num_list[1:]):
total += right - left
if total >= overflow:
key += 1
number_dict[key] = [right]
total = 0
else:
number_dict[key].append(right)
for k, v in sorted(number_dict.items()):
print k
print v
回溯(最近一次呼叫最后一次):
文件“”,第15行,在
数字目录更新({km:num\u list})
NameError:未定义名称“km”
正如ndpu所指出的,您的最后一个x将超出您的数值列表的范围。首先,您正在使用
km
进行分配
Traceback (most recent call last):
File "<pyshell#29>", line 15, in <module>
number_dict.update({km: num_list})
NameError: name 'km' is not defined
num_list = [1, 3, 5, 9, 18, 20, 22, 25, 27, 31]
overflow = 20
total = 0
key = 1
number_dict = {1: [1]}
for left, right in zip(num_list[:-1], num_list[1:]):
total += right - left
if total >= overflow:
key += 1
number_dict[key] = [right]
total = 0
else:
number_dict[key].append(right)
for k, v in sorted(number_dict.items()):
print k
print v
回溯(最近一次呼叫最后一次):
文件“”,第15行,在
数字目录更新({km:num\u list})
NameError:未定义名称“km”
正如ndpu指出的,您的最后一个x将超出您的num_列表的范围
num_list = [1, 3, 5, 9, 18, 20, 22, 25, 27, 31]
overflow = 20
total = 0
key = 1
number_dict = {1: [1]}
for left, right in zip(num_list[:-1], num_list[1:]):
total += right - left
if total >= overflow:
key += 1
number_dict[key] = [right]
total = 0
else:
number_dict[key].append(right)
for k, v in sorted(number_dict.items()):
print k
print v
产出:
1
[1, 3, 5, 9, 18, 20]
2
[22, 25, 27, 31]
产出:
1
[1, 3, 5, 9, 18, 20]
2
[22, 25, 27, 31]
产出:
1
[1, 3, 5, 9, 18, 20]
2
[22, 25, 27, 31]
产出:
1
[1, 3, 5, 9, 18, 20]
2
[22, 25, 27, 31]
你应该发布追踪。假设问题是“为什么我会出现此错误?”因为我没有看到实际的问题。回溯(最近一次调用last):文件“”,第15行,在number_dict.update({km:num_list})NameError:name“km”没有为第一个循环
num_list[x+1]中的lastx
定义
将超出范围…您可能希望从范围(0,len(num\u list)-1)中的x的开始:
然后您可能希望number\u dict.update({km:incl\u num\u list})
您应该发布回溯。假设问题是“为什么我会出现此错误?”因为我没有看到实际的问题。回溯(最近一次调用last):文件“”,第15行,在number_dict.update({km:num_list})NameError:name“km”没有为第一个循环num_list[x+1]中的lastx
定义
将超出范围…您可能希望从范围(0,len(num\u list)-1)中的x的开始:
然后您可能希望number\u dict.update({km:incl\u num\u list})
您应该发布回溯。假设问题是“为什么我会出现此错误?”因为我没有看到实际的问题。回溯(最近一次调用last):文件“”,第15行,在number_dict.update({km:num_list})NameError:name“km”没有为第一个循环num_list[x+1]中的lastx
定义
将超出范围…您可能希望从范围(0,len(num\u list)-1)中的x的开始:
然后您可能希望number\u dict.update({km:incl\u num\u list})
您应该发布回溯。假设问题是“为什么我会出现此错误?”因为我没有看到实际的问题。回溯(最近一次调用last):文件“”,第15行,在number_dict.update({km:num_list})NameError:name“km”没有为第一个循环num_list[x+1]中的lastx
定义
将超出范围…您可能希望从范围(0,len(num\u list)-1)中的x开始,
然后您可能希望数字目录更新({km:incl\u num\u list})
这看起来是一个优雅的解决方案。你当然是为他做的。语义命名也做得很好。尽管你可以利用zip的截短功能,将num_list[:-1]变成num_list.Perfect。谢谢,伙计们。看起来这是一个优雅的解决方案。你当然是为他做的。语义命名也做得很好。尽管你可以利用zip的截短功能,将num_list[:-1]变成num_list.Perfect。谢谢,伙计们。看起来这是一个优雅的解决方案。你当然是为他做的。语义命名也做得很好。尽管你可以利用zip的截短功能,将num_list[:-1]变成num_list.Perfect。谢谢,伙计们。看起来这是一个优雅的解决方案。你当然是为他做的。语义命名也做得很好。尽管你可以利用zip的截短功能,将num_list[:-1]变成num_list.Perfect。谢谢你们,这不是一个真正的答案。从问题输出中,您可以猜测初始值是1
@njzk2,那么我希望您投票支持另一个响应,这是一个完整的工作实现。我没有回答。从问题输出中,您可以猜测初始值是1
@njzk2,那么我希望您投票支持另一个响应,这是一个完整的工作实现。我没有回答。从问题输出中,您可以猜测初始值是1
@njzk2,那么我希望您投票支持另一个响应,这是一个完整的工作实现。我没有回答。从问题输出中,您可以猜测初始值是1
@njzk2,那么我希望您投票支持另一个响应,这是一个完整的工作实现。是的。