遍历 Python 客户订单中的字典 - 每行而不是每个键

Iterate through Python dictionary in customer order - Per row instead of per key

假设以下情况:我有一本有 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 ETC ...

不过,我想做的是:

  1. 迭代第 1 行 - 键 1

  2. 迭代第 1 行 - 键 2

  3. 迭代第 1 行 - 键 3

  4. 迭代第 2 行 - 键 1

  5. 迭代第 2 行 - 键 2 ETC ...

有没有聪明的方法来改变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