我正在尝试创建一个带有三个参数的函数:(divisors
列表)、lower
、 和upper
,其中upper >= lower
。我希望函数返回一个字典,其中键是除数,其值是可被相应除数整除的范围(下限和上限)之间的数字列表。
这是我的初步尝试:
def create_divisors_dict(divisors, lower, upper):
list = []
dict = {}
for i in range(len(divisors)):
for j in range(lower, upper + 1):
if j % divisors[i] == 0:
list.append(j)
dict[i] = list
else:
dict[i] = []
return dict
print(create_divisors_dict([1, 2, 5], 2, 4))
预期的输出是:
{1: [2, 3, 4], 2: [2, 4], 5: []}
但是,我不断收到一些奇怪的输出,这是我用上面显示的代码得到的最接近的输出:
{1: [2, 3, 4, 2, 4], 2: [2, 3, 4, 2, 4], 5: []}
有人可以帮助我并告诉我问题出在哪里或我做错了什么吗?
这只是另一种选择,根据您发布的代码构建:
def create_divisors_dict(divisors, lower, upper):
d = {}
for divisor in divisors:
d[divisor] = []
for n in range(lower, upper + 1):
if n % divisor == 0:
d[divisor].append(n)
return d
或者使用一些列表理解:
def create_divisors_dict(divisors, lower, upper):
d = {}
for divisor in divisors:
d[divisor] = [n for n in range(lower, upper + 1) if n % divisor == 0]
return d
甚至结合字典和列表推导式:
def create_divisors_dict(divisors, lower, upper):
return {d: [n for n in range(lower, upper + 1) if n % d == 0] for d in divisors}
其中任何一个将导致:
print(create_divisors_dict([1, 2, 5], 2, 4))
{1: [2, 3, 4], 2: [2, 4], 5: []}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句