You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时遍历两个字典并提取对应索引的值?

解决同时遍历两个字典对应索引值的问题

咱们先梳理下你原来代码里的几个问题,这也是导致它跑不起来的核心原因:

  • 不管是Python 2还是3,直接用color.values()[i]都有问题:Python 3里dict.values()返回的是视图对象,不是列表,没法直接用索引;Python 2里虽然是列表,但你嵌套的for循环会让每个color值都对应所有fruit值,完全不是你要的“对应索引配对”的效果
  • while循环和嵌套for的逻辑混在一起,导致循环逻辑混乱,不符合你的需求

接下来给你两个可行的解决方案,根据你的Python版本选就行:

方案一:Python3.7+(字典默认保留插入顺序)

从Python3.7开始,普通字典会记住键值对的插入顺序,所以直接把两个字典的值转成列表,用zip就能轻松配对对应索引的元素:

color = {'red': 1, 'blue': 2, 'green': 3}
fruit = {'cherry': 4, 'berry': 5, 'apple': 6}
levels = [1000, 925, 850, 700, 500, 400, 300, 250, 200, 150, 100]
levels.sort()

# 把字典的值转换成列表,保证顺序和插入时一致
color_values = list(color.values())
fruit_values = list(fruit.values())

# 用zip同时遍历三组对应的数据,取前3组和你原来的i<3逻辑一致
for c_val, f_val, level in zip(color_values[:3], fruit_values[:3], levels[:3]):
    print(c_val)
    print(f_val)
    print(f'{level} mb EDR Normalized Anomalies')

这段代码的输出就是你想要的:

1
4
100 mb EDR Normalized Anomalies
2
5
150 mb EDR Normalized Anomalies
3
6
200 mb EDR Normalized Anomalies

(注:levels排序后是升序,所以前三个是100、150、200,和你原来的排序逻辑一致)

方案二:Python3.6及以下版本(需要保证字典有序)

如果你的Python版本低于3.7,普通字典是无序的,这时候可以用collections.OrderedDict来确保键值对的顺序:

from collections import OrderedDict

# 用OrderedDict定义,保证顺序和插入一致
color = OrderedDict([('red', 1), ('blue', 2), ('green', 3)])
fruit = OrderedDict([('cherry', 4), ('berry', 5), ('apple', 6)])
levels = [1000, 925, 850, 700, 500, 400, 300, 250, 200, 150, 100]
levels.sort()

color_values = list(color.values())
fruit_values = list(fruit.values())

for c_val, f_val, level in zip(color_values[:3], fruit_values[:3], levels[:3]):
    print(c_val)
    print(f_val)
    print(f'{level} mb EDR Normalized Anomalies')

这样就能保证两个字典的值按你定义的顺序对应,实现和方案一一样的效果。

内容的提问来源于stack exchange,提问作者ak_cira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:29:23