python - 迭代字典键和值
问题描述
我有一个如下的字典和一个名为“multi”的函数,它将数字作为参数。该函数将字典中键的每个值乘以作为参数输入的数字。所以我想做的是,我想迭代函数“multi”,以便计算一定范围的“i”
a_dict={'cms': 123, 'dms': 133, 'test': 111}
def multi(i):
for key, values in a_dict.items():
values=values*i
return (key,values)
multi(2)
这是我制作的迭代函数示例
def iterate_(start,end,range_):
box=[]
for a in range (start,end+1,range_):
data=multi(a)
box.append(data)
return box
这是输出:
iterate_(10,50,10)
Output: [('cms', 1230), ('cms', 2460), ('cms', 3690), ('cms', 4920), ('cms', 6150)]
返回结果只会返回字典的第一个键。我期望它返回所有字典的键以及每次迭代的更新值。
我确实尝试将“返回”更改为“打印”,设法获取所有带有更新结果的键,但得到一个空列表。
a_dict={'cms': 123, 'dms': 133, 'test': 111}
def multi(i):
for key, values in a_dict.items():
values=values*i
print (key,values)
def iterate_(start,end,range_):
box=[]
for a in range (start,end+1,range_):
data=multi(a)
box.append(data)
a+=5
return box
iterate_(10,50,10)
Output:
cms 1230
dms 1330
test 1110
cms 2460
dms 2660
test 2220
cms 3690
dms 3990
test 3330
cms 4920
dms 5320
test 4440
cms 6150
dms 6650
test 5550
[23]:
[None, None, None, None, None]
解决方案
在 multi function() 中使用 return 你的循环在第一次迭代中中断,所以它只返回你的 dict 的第一个键值对。使用 print() 而不是 return 它什么也不返回,这就是为什么你的列表在第二种情况下是空的
这是一个解决方案。请注意,我们在 iterate_ 函数中使用了“扩展”:
a_dict={'cms': 123, 'dms': 133, 'test': 111}
def multi(i):
return [(key, i*value) for key, value in a_dict.items()]
def iterate_(start,end,range_):
box=[]
for a in range (start,end+1,range_):
data=multi(a)
box.extend(data)
a+=5
return box
Example:
>>> iterate_(10,50,10)
[('cms', 1230), ('dms', 1330), ('test', 1110), ('cms', 2460), ('dms', 2660), ('test', 2220), ('cms', 3690), ('dms', 3990), ('test', 3330), ('cms', 4920), ('dms', 5320), ('test', 4440), ('cms', 6150), ('dms', 6650), ('test', 5550)]
推荐阅读
- java - PDF“Itext 用户代理”缓存大小以及如何清除它
- javascript - 从对象数组中删除重复键
- python - Odoo幽灵记录
- php - 在 PHP 中将多行/自动换行添加到图像字符串
- asp.net-core - 使用身份服务器 4 诊断 ios(safari 和 chrome)上的无限循环身份验证需要指导
- java - 删除字符串中的特定字符
- html - 无法在模态上关闭模态
- abap - 从 GET_AUTH_VALUES FM 输出构造 SQL 查询
- json - 无法在 Visual Studio 2017 中创建 JSON 文件
- c# - 如果我们不在 API 中使用 DTO,会发生什么?