分组Python对象列表

时间:2019-05-03 16:37:02

标签: python group-by grouping

我有一个类服务类型的Python对象列表。我想根据此类的数据成员之一对该列表进行分组

class service:
    def __init__(self, tasknum, candidatenum, features, cost):
        self.tasknum = tasknum
        self.candidatenum = candidatenum
        self.features = features
        self.cost = cost

s11 = service(1,1, features = [1], cost = 30)
s12 = service(1,2, features = [1], cost = 50)
s13 = service(1,3, features = [1], cost = 70)
s14 = service(1,4, features = [1], cost = 200)
s15 = service(1,5, features = [2], cost = 20)

lstservice = []
lst.append(s11)
lst.append(s12)
lst.append(s13)
lst.append(s14)
lst.append(s15)

我想通过列表功能对列表lst进行分组,也就是说,在上文中,s11,s12,s13和s14将组成一个组。将对列表要素进行分组,以使一组对象中的所有对象都具有完全相同的要素值,即,列表特性对于组中的所有对象都相同。我该如何进行?

1 个答案:

答案 0 :(得分:2)

Scikit学习或模糊聚类算法在这里非常过头,在这里您要确定一个明确的列表。

您可以创建一个字典,将要素存储为键,将服务列表存储为值。请注意,由于列表是可变的,因此在将其用作键之前,您需要将它们转换为元组(或者,由于功能似乎不可变,因此始终使用元组)。

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
</head>
<body>
<script>
var data = [
    [
        "Tiger Nixon",
        "System Architect",
        "Edinburgh"
    ],
    [
        "Garrett Winters",
        "Director",
        "Edinburgh"
    ]
]
$(document).ready( function () {
    $('#table_id').DataTable( {
	data: data
	} );
} );
</script>
<table id="table_id" class="display">
    <thead>
        <tr>
            <th>Name</th>
            <th>Job</th>
			<th>City</th>
        </tr>
    </thead>
</table>
</body>
</html>