python - 使用子字符串将字典转换为列表

标签 python list dictionary substring

我有以下字典:

dict = {
    "HVAC_flex[1,1]": 8.0,
    "HVAC_flex[1,2]": 15.0,
    "HVAC_flex[2,1]": 0.0,
    "HVAC_flex[2,2]": 0.0,
    "DHW_flex[1,1]": 0.0,
    "DHW_flex[1,2]": 2.0,
    "DHW_flex[2,1]": 4.0,
    "DHW_flex[2,2]": 17.0
}

我想要生成两个列表,如下所示:

HVAC_flex = [ 8.0, 15.0, 0.0, 0.0]
DHW_flex = [ 0.0, 2.0, 4.0, 17.0]

问题是维度是动态定义的,因此 dict 可能包含其他值。

我的想法是搜索子字符串,例如如果HVAC_flex包含在键中,然后将值放入此列表中,等等,但我可以找到一种聪明的方法来实现这一点。有办法做到这一点吗?

最佳答案

您无法创建这些“命名”列表 - 但是您可以使用列表理解来创建值列表的列表:

d = {
    "HVAC_flex[1,1]": 8.0,
    "HVAC_flex[1,2]": 15.0,
    "HVAC_flex[2,1]": 0.0,
    "HVAC_flex[2,2]": 0.0,
    "DHW_flex[1,1]": 0.0,
    "DHW_flex[1,2]": 2.0,
    "DHW_flex[2,1]": 4.0,
    "DHW_flex[2,2]": 17.0
}

prefix = ["HVAC", "DHW"]

values = [ [v for key,v in d.items() if key.startswith(b)] for b in prefix ]

print(values)

输出:

[[8.0, 15.0, 0.0, 0.0], [0.0, 2.0, 4.0, 17.0]]

使用字典理解来创建另一个字典可能更有意义:

values = {b: [v for key,v in d.items() if key.startswith(b)] for b in prefix }

print(values)

保留有关前缀的信息:

{'HVAC': [8.0, 15.0, 0.0, 0.0], 'DHW': [0.0, 2.0, 4.0, 17.0]}

关于python - 使用子字符串将字典转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71853682/

相关文章:

python - 使用 django 自定义管理器方法作为 Q 对象链的一部分

java - 单链表迭代复杂度

perl - 如何按元素对两个列表求和

javascript - 类型错误 : map[msg[1]] is not a function

python - 根据同一行其他列中的值将函数应用于数据框列元素?

python - 如何在c中扩展python?

python - 使用 python 写入文本文件时,我需要更新特定列

r - 如何合并具有相同列名的列表以获得它们的联合

python - 没有客户端/服务器的 key : value store in Python for possibly 100 GB of data,

python - 创建一个字典,其中键是一个整数,值是一个随机句子的长度