[英]Transforming a python dict into a list of lists
我继承了一个令人困惑的代码,它使用列表列表来形成一个表格,主要是从各种来源获取数据,然后与其他 API 通信,它转换为一个字典,其键由一个字母和一个数字组成,就像在 excel 文件中,示例如下:
[
[elem1, elem2, elem3...],
[item1, item2, item3...]
[...]
]
transforms into
{
"A1": elem1,
"A2": elem2,
"A3": elem3,
...
"B1": item1,
"B2": item2,
...
}
为了进行这种转换,我制作了以下代码,其中项目是列表列表,字母是包含字母表的列表:
def create_dict(items, letters):
data = {}
for cidx, col in enumerate(items):
for ridx, row in enumerate(col):
data[letters[cidx] + str(ridx + 1)] = row
return data
我知道有更好的方法来做到这一点,比如使用 pandas 和其他东西,但我试图保留模式并且我在编写另一种方式的代码时遇到了困难,即使用字典和转换将其放入列表列表中,以便其他实习生 API 可以在此表中插入更多信息。
听起来您对从列表列表创建字典的代码感到满意,现在您正在寻找一种反向运行该过程的方法:从字典到列表列表的 go。 实现此目的的一种方法是使用itertools
groupby
function 按字母对字典键进行聚类。
例子:
import collections
import itertools
d = {
"A1": "elem1",
"A2": "elem2",
"A3": "elem3",
"B1": "item1",
"B2": "item2",
}
od = dict(sorted(d.items()))
output_list = []
for _, group in itertools.groupby(od.items(), key=lambda item_tuple: item_tuple[0][0]):
values = [
one_value
for _, one_value in group
]
output_list.append(values)
print(output_list)
Output:
[['elem1', 'elem2', 'elem3'], ['item1', 'item2']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.