将python dict转换为列表列表

将python dict转换为列表列表,python,python-3.x,Python,Python 3.x,我继承了一个令人困惑的代码,为了形成一个表,它使用一个列表列表来主要从各种来源获取数据,然后与其他API通信,它将转换为一个字典,该字典的键由字母和数字组成,就像excel文件中一样,下面是一个示例: [ [elem1, elem2, elem3...], [item1, item2, item3...] [...] ] transforms into { "A1": elem1, "A2": elem2, "A

我继承了一个令人困惑的代码,为了形成一个表,它使用一个列表列表来主要从各种来源获取数据,然后与其他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

我知道有更好的方法可以做到这一点,比如使用熊猫和其他东西,但我正试图保持这种模式,我在编写代码时遇到了困难,这就是使用字典并将其转换为列表列表,以便其他intern API可以在此表中插入更多信息。

听起来您对从列表列表创建字典的代码很满意,现在您正在寻找一种反向运行该过程的方法:从字典到列表列表。实现这一点的一种方法是使用
itertools
groupby
函数按字母对字典键进行聚类

例如:

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)
输出:

[['elem1', 'elem2', 'elem3'], ['item1', 'item2']]

如果表中的列数超过26列,则会出现错误。因此,我建议在运行中生成字母,或者进行适当的检查。使用
'%d-%d'(cidx,ridx)
作为键就足够了