遍历 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
迭代第 2 行 - 键 1
迭代第 3 行 - 键 1
迭代第 4 行 - 键 1
迭代第 5 行 - 键 1
迭代第 1 行 - 键 2
迭代第 2 行 - 键 2
ETC
...
不过,我想做的是:
迭代第 1 行 - 键 1
迭代第 1 行 - 键 2
迭代第 1 行 - 键 3
迭代第 2 行 - 键 1
迭代第 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
假设以下情况:我有一本有 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 ETC ...
不过,我想做的是:
迭代第 1 行 - 键 1
迭代第 1 行 - 键 2
迭代第 1 行 - 键 3
迭代第 2 行 - 键 1
迭代第 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