我有一个巨大的列表,我把它转换成一个dict(基于第一个列表元素),以便用键进行快速搜索。
列表:
[0100,A,1.00,1]
.
.
[0450,A,1.00,1]
[0470,B,1.00,1]
[0480,A,1.00,1]
[0490,A,1.00,1]
[0500,A,1.00,1] #list-1 for below ref
[0510,B,1.00,1]
[0520,A,1.00,1]
[0530,A,1.00,1]
[0500,A,1.00,1] #list-2 for below ref
[0510,B,1.00,1]
[0520,X,1.00,1] #........转换为Dic:
for key, *vals in bytes_data: #Probably need a diff approach here itself instead appending
data_dict.setdefault(key, []).append(vals) 迪克特看起来
{
'0450': [[A,1.00,1]],
'0470': [[B,1.00,1]],
'0480': [[A,1.00,1]], #......
}现在,我现在的场景需要像4xx/5xx/.根据实际情况。为此,我用..。
key_series = ["0" + str(x) for x in range(500, 600, 10)]
article_data = {
key: data_dict[key] for key in set(key_series) & set(data_dict)
}问题是,对于像5xx这样的系列,会出现多个事件。在这种情况下,我的数据分组如下
{
0500: [list-1,list-2,..],
0510: [list-1,list-2,..]
}但是,我需要这样的东西
{
0500-1: {0500: [list-1], 0510: [list-1],....},
0500-2: {0500: [list-2], 0510: [list-2],....},
}有什么办法可以做到吗?谢谢。
发布于 2022-07-19 11:07:09
不确定,如果这是你想要的,让我知道这是否解决了你的问题
from collections import defaultdict
data_dict = {
"0500": [["A",1.00,1]],
"0510": [["A",1.00,1], ["B",1.00,1], ["B",1.00,1]],
"0520": [["A",1.00,1], ["D",1.00,1]]
}
key_series = ["0" + str(x) for x in range(500, 600, 10)]
article_data = {
key: data_dict[key] for key in set(key_series) & set(data_dict)
}
res = defaultdict(dict)
for k ,v in data_dict.items():
for i, d in enumerate(v):
# for now 0500 is hardcoded, which can be made dynamic as per requirement
res[f"0500-{i+1}"][k] = d
print(res)https://stackoverflow.com/questions/73035274
复制相似问题