python - 将 python dict 转换为列表列表

标签 python python-3.x

我继承了一个令人困惑的代码,它形成一个表,它使用一个列表的列表,主要是从各种来源获取数据,然后与其他 API 通信,它转换成一个字典,其中的键由一个字母和一个数字就像在 excel 文件中一样,示例如下:

[
    [elem1, elem2, elem3...],
    [item1, item2, item3...]
    [...]
]

transforms into

{
 "A1": elem1,
 "A2": elem2,
 "A3": elem3,
  ...
 "B1": item1,
 "B2": item2,
 ...
}

为了进行这样的转换,我编写了以下代码,其中 items 是列表的列表,letters 是包含字母表的列表:

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 可以在此表中插入更多信息。

最佳答案

听起来您对从列表列表创建字典的代码很满意,现在您正在寻找一种反向运行该过程的方法:从字典转到列表列表。实现此目的的一种方法是使用 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']]

关于python - 将 python dict 转换为列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67188621/

相关文章:

python - 在 block 内声明变量为全局变量 __name__ == "__main__"

python - 转换字符串日期,不能用零填充

python - 如何找到当前函数的名称?

python - Django Rest Framework - 处理 API 参数验证错误的最佳方法?

python - 关闭 Python 守护进程时运行代码

python - 如何从索引向量 B 中计算从向量 A 中选择的值的平均值?

python - 函数中只允许循环奇数

python - 困惑为什么这段代码不会打印任何内容

python - float 布局 KIVY 中的动画

python - 使用 callable(x) 与 hasattr(x, "__call__")