python - 按客户顺序遍历 Python 字典 - 每行而不是每键
问题描述
假设以下情况:我有一个带有 3 个键的字典。每个键都是一个 5 行的 pd 数据框。
我目前正在使用以下方法遍历完整的字典:
for key in dict1:
for i in range(len(dict1[key])):
do_something
所以这个迭代的工作方式是:
迭代第 1 行 - 键 1
迭代第 2 行 - 键 1
迭代第 3 行 - 键 1
迭代第 4 行 - 键 1
迭代第 5 行 - 键 1
迭代第 1 行 - 键 2
迭代第 2 行 - 键 2 等...
但是,我想做的是:
迭代第 1 行 - 键 1
迭代第 1 行 - 键 2
迭代第 1 行 - 键 3
迭代第 2 行 - 键 1
迭代第 2 行 - 键 2 等...
有没有一种聪明的方法来改变 for 循环的迭代顺序?
解决方案
它不需要聪明的方法。您必须以for
不同的顺序使用 -loops - first range
, next keys
。就这样。
for i in range(len(dict1['key1'])):
for key in dict1:
print(dict1[key].iloc[i,0])
最少的工作代码
import pandas as pd
dict1 = {
'key1': pd.DataFrame([f'row{i} key1' for i in range(1, 6)]),
'key2': pd.DataFrame([f'row{i} key2' for i in range(1, 6)]),
'key3': pd.DataFrame([f'row{i} key3' for i in range(1, 6)]),
}
for i in range(len(dict1['key1'])):
for key in dict1:
print(dict1[key].iloc[i,0])
结果:
row1 key1
row1 key2
row1 key3
row2 key1
row2 key2
row2 key3
row3 key1
row3 key2
row3 key3
row4 key1
row4 key2
row4 key3
row5 key1
row5 key2
row5 key3
推荐阅读
- python - 带有 PyTorch 的 Tensorboard:切换运行不起作用
- mysql - 基于连接结果的“Where”语句
- javascript - 如何创建一个回复按钮,每次单击一个按钮时显示
- mysql - 使用 DATEDIFF 在 mysql 中计算过去 24 小时内的数据?
- java - java中是否有一个函数来检查任何json属性是否为空?
- c++ - 在OpenCV中获取与背景减法和密集光流对应的数值
- php - 尝试在第 1753 行的 scss.inc.php 中访问类型为 null 的值的数组偏移量
- javascript - 如何在网站上查看管理此点击展开内容的 JS 文件?
- javascript - CSS适用于自定义标签但不适用于DIV?
- python - nbconvert 使用 '--allow-chromium-download'