如何修改Python循环代码,实现列表与字典值的一一对应输出
实现列表元素与字典值一一对应输出
你的问题根源在于嵌套循环:外层循环遍历列表每个元素,内层循环又遍历字典所有值,导致每个列表元素都和所有字典值配对输出,最终出现重复结果。要实现一一对应,只需将列表元素与字典值按顺序配对后单次循环即可,以下是两种可行方案:
方案一:使用zip()函数(推荐)
zip()可将多个可迭代对象按位置一一打包成元组,直接遍历这些元组就能实现配对输出:
data = {'A': 10, 'B': 20} one = ['one','two'] def myfunction(a,b): print(a,b) # 打包列表与字典值,遍历配对输出 for x, value in zip(one, data.values()): myfunction(x, value)
方案二:通过索引对应
先将字典值转换为有序列表,再通过索引将列表元素与对应位置的字典值配对:
data = {'A': 10, 'B': 20} one = ['one','two'] def myfunction(a,b): print(a,b) # 提取字典值为有序列表 values_list = list(data.values()) # 遍历列表同时获取索引,用索引取对应字典值 for idx, x in enumerate(one): myfunction(x, values_list[idx])
注意:Python 3.7及以上版本的字典默认保持插入顺序,因此data.values()的顺序与字典定义时一致(10在前、20在后),刚好和列表['one','two']的顺序匹配。若使用更早版本的Python,需用collections.OrderedDict来保证字典顺序。
内容的提问来源于stack exchange,提问作者mark22
相关产品推荐
相关产品推荐

