如何使用Python按值对列表进行分组并放入新的动态变量。我有一些这样的数据列表,我想基于值K93、K94、K0JA=>(这将是一个动态值(
data_list = [
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K94', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [600, 30]),
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [300, 15]),
(('K93', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15]),
(('K94', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])]
我想要这样的结果:
list_K93 = [
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15]),
]
list_K94 = [
(('K94', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K94', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])
]
list_K0JA = [
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [600, 30]),
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [300, 15])
]
您应该创建一个具有所需键的dict,而不是动态命名的变量,这可以通过用列表初始化输出dict的每个新键并将每个元组条目附加到列表来完成:
data_dict = {}
for t in data_list:
data_dict.setdefault(t[0][0], []).append(t)
data_dict
变为:
{
'K93': [(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])],
'K94': [(('K94', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K94', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])],
'K0JA': [(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [600, 30]),
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [300, 15])]
}
您可以创建类似的动态变量
i = "test"
globals()[f"dynamic_variable_{i}"] = i
print(dynamic_variable_test)
这是代码
data_list = [
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),]
def create_dynamic_var(name,value):
globals()[f"list_{name}"] = []
globals()[f"list_{name}"].append(value)
for elem in data_list:
print(elem[0][0])
create_dynamic_var(elem[0][0],elem)
print(list_K93)
您可以通过如下字典对数据进行聚类:
result = {}
for i in data_list:
if i[0][0] in result:
result[i[0][0]].append(i)
else:
result[i[0][0]] = []
result[i[0][0]].append(i)
因此,结果将是这样的字典:
{'K93': [(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJVGB', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K93', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])],
'K94': [(('K94', 'AMK2FJSRM', 0.0, 600.0, 300), [300, 15]),
(('K94', 'AMK2FJNBK', 0.0, 800.0, 400), [300.0, 15])],
'K0JA': [(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [600, 30]),
(('K0JA', 'AMK0JA ', 0.0, 700.0, 400), [300, 15])]}