按客户顺序遍历Python字典-按行而不是按键



假设以下情况:我有一个包含3个键的字典。每个键都是一个具有5行的pd数据帧。

我目前正在使用迭代整个字典

for key in dict1:
for i in range(len(dict1[key])):
do_something

所以这个迭代的工作方式是:

  1. 迭代第1行-密钥1

  2. 迭代第2行-键1

  3. 迭代第3行-键1

  4. 迭代第4行-键1

  5. 迭代第5行-键1

  6. 迭代第1行-键2

  7. 迭代第2行-键2等…

但是,我想做的是:

  1. 迭代第1行-密钥1

  2. 迭代第1行-键2

  3. 迭代第1行-键3

  4. 迭代第2行-键1

  5. 迭代第2行-键2等…

有没有一种聪明的方法可以更改for循环的迭代顺序?

它不需要智能方式。您必须使用for-按不同顺序循环-第一个range,下一个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

最新更新