我想根据我的规则对一些不完全符合我的规则的数据进行分类
I want to categorize some data according to my rules that are not completely in accordance with my rules
我想对一些不完全符合我规则的数据按照我的规则进行分类
group = ((1, ["zt"]), (2, ["xjt"]), (3, ["ppt"]), (4, ["dpt"]), (5, ["sxb"]), (6, ["tmzt"]))
indata = [(1001,"zt_1"), (1002,"zt_2"), (1021,"tmzt_1"),(1023,"xjt_1"), (1244,"xjt_2")]
我要按规则分组(分组)
outdata = [(1, 1001,"zt_1", 1), (1, 1002,"zt_2", 2), (6, 1021,"tmzt_1", 1),(2, 1023,"xjt_1", 1), (2, 1244,"xjt_2", 2)]
outdata contain (group id, indata id, indata name, group inner sort)
但并不是所有的数据都符合我的群规
输出也可以是像
这样的字典
[{"group_id": 1, "image_id": 1001, "name": "zt_1", "sort_order": 1}, ...]
组是独一无二的
您可以通过创建一个中间字典来更轻松地解决这个问题,它可以用来检查哪些值应该保留在结果中。
group = ((1, ["zt"]), (2, ["xjt"]), (3, ["ppt"]), (4, ["dpt"]), (5, ["sxb"]), (6, ["tmzt"]))
indata = [(1001,"zt_1"), (1002,"zt_2"), (1021,"tmzt_1"),(1023,"xjt_1"), (1244,"xjt_2")]
group_dict = {tup[1][0]: tup[0] for tup in group}
#Output:
{'zt': 1, 'xjt': 2, 'ppt': 3, 'dpt': 4, 'sxb': 5, 'tmzt': 6}
result = []
for tup in indata:
key, val = tup[1].split("_")
if key in group_dict:
result.append((group_dict[key], *tup, int(val)))
print(result)
#Output:
[(1, 1001, 'zt_1', 1),
(1, 1002, 'zt_2', 2),
(6, 1021, 'tmzt_1', 1),
(2, 1023, 'xjt_1', 1),
(2, 1244, 'xjt_2', 2)]
我想对一些不完全符合我规则的数据按照我的规则进行分类
group = ((1, ["zt"]), (2, ["xjt"]), (3, ["ppt"]), (4, ["dpt"]), (5, ["sxb"]), (6, ["tmzt"]))
indata = [(1001,"zt_1"), (1002,"zt_2"), (1021,"tmzt_1"),(1023,"xjt_1"), (1244,"xjt_2")]
我要按规则分组(分组)
outdata = [(1, 1001,"zt_1", 1), (1, 1002,"zt_2", 2), (6, 1021,"tmzt_1", 1),(2, 1023,"xjt_1", 1), (2, 1244,"xjt_2", 2)]
outdata contain (group id, indata id, indata name, group inner sort) 但并不是所有的数据都符合我的群规
输出也可以是像
这样的字典[{"group_id": 1, "image_id": 1001, "name": "zt_1", "sort_order": 1}, ...]
组是独一无二的
您可以通过创建一个中间字典来更轻松地解决这个问题,它可以用来检查哪些值应该保留在结果中。
group = ((1, ["zt"]), (2, ["xjt"]), (3, ["ppt"]), (4, ["dpt"]), (5, ["sxb"]), (6, ["tmzt"]))
indata = [(1001,"zt_1"), (1002,"zt_2"), (1021,"tmzt_1"),(1023,"xjt_1"), (1244,"xjt_2")]
group_dict = {tup[1][0]: tup[0] for tup in group}
#Output:
{'zt': 1, 'xjt': 2, 'ppt': 3, 'dpt': 4, 'sxb': 5, 'tmzt': 6}
result = []
for tup in indata:
key, val = tup[1].split("_")
if key in group_dict:
result.append((group_dict[key], *tup, int(val)))
print(result)
#Output:
[(1, 1001, 'zt_1', 1),
(1, 1002, 'zt_2', 2),
(6, 1021, 'tmzt_1', 1),
(2, 1023, 'xjt_1', 1),
(2, 1244, 'xjt_2', 2)]