Python 如何计算子列表中某个模式在列表中出现的次数,然后将该次数附加到子列表中?

Python 如何计算子列表中某个模式在列表中出现的次数,然后将该次数附加到子列表中?,python,list,counter,sublist,Python,List,Counter,Sublist,挑战在于,我想计算某个模式的项目在某个索引的子列表中出现的次数 例如,我想计算索引0和索引1处出现唯一模式的次数。”“a”和“z”在索引0和索引1下出现三次,而“1”和“2”在索引0和索引1下出现两次。我只关心索引0和1处出现的对,我想知道存在的唯一对的计数,然后将该计数追加回子列表 List = [['a','z','g','g','g'],['a','z','d','d','d'],['a','z','z','z','d'],['1','2','f','f','f'],['1','2','3

挑战在于,我想计算某个模式的项目在某个索引的子列表中出现的次数

例如,我想计算索引0和索引1处出现唯一模式的次数。”“a”和“z”在索引0和索引1下出现三次,而“1”和“2”在索引0和索引1下出现两次。我只关心索引0和1处出现的对,我想知道存在的唯一对的计数,然后将该计数追加回子列表

List = [['a','z','g','g','g'],['a','z','d','d','d'],['a','z','z','z','d'],['1','2','f','f','f'],['1','2','3','f','f'],['1','1','g','g','g']]

Desired_List = [['a','z','g','g','g',3],['a','z','d','d','d',3],['a','z','z','z','d',3],['1','2','f','f','f',2],['1','2','3','f','f',2],['1','1','g','g','g',1]]
目前,我的尝试是:

from collections import Counter
l1 = Counter(map(lambda x: (x[0] + "|" + x[1]),List)

Deduped_Original_List = map(lambda x: Counter.keys().split("|"),l1)
Counts = map(lambda x: Counter.values(),l1)

for ele_a, ele_b in zip(Deduped_Original_List, Counts):
    ele_a.append(ele_b)

这显然不起作用,因为在这个过程中,我丢失了索引2、3和4

您可以对集合使用列表理解。计数器:

from collections import Counter
lst = [['a','z','g','g','g'],['a','z','d','d','d'],['a','z','z','z','d'],['1','2','f','f','f'],['1','2','3','f','f'],['1','1','g','g','g']]
cnt = Counter([tuple(l[:2]) for l in lst])
lst_output = [l + [cnt[tuple(l[:2])]] for l in lst]
print lst_output
输出:

[['a', 'z', 'g', 'g', 'g', 3], ['a', 'z', 'd', 'd', 'd', 3], ['a', 'z', 'z', 'z', 'd', 3], ['1', '2', 'f', 'f', 'f', 2], ['1', '2', '3', 'f', 'f', 2], ['1', '1', 'g', 'g', 'g', 1]]

您可以对集合使用列表理解。计数器:

from collections import Counter
lst = [['a','z','g','g','g'],['a','z','d','d','d'],['a','z','z','z','d'],['1','2','f','f','f'],['1','2','3','f','f'],['1','1','g','g','g']]
cnt = Counter([tuple(l[:2]) for l in lst])
lst_output = [l + [cnt[tuple(l[:2])]] for l in lst]
print lst_output
输出:

[['a', 'z', 'g', 'g', 'g', 3], ['a', 'z', 'd', 'd', 'd', 3], ['a', 'z', 'z', 'z', 'd', 3], ['1', '2', 'f', 'f', 'f', 2], ['1', '2', '3', 'f', 'f', 2], ['1', '1', 'g', 'g', 'g', 1]]

我喜欢YS-L的
计数器
方法。这里是另一种方法:

>>> List = [['a','z','g','g','g'], ['a','z','d','d','d'], ['a','z','z','z','d'],['1','2','f','f','f'], ['1','2','3','f','f'], ['1','1','g','g','g']]
>>> d = {}
>>> for i in List:
       key = i[0] + i[1]
       if not d.get(key, None): d[key] = 1
       else: d[key] += 1


>>> Desired_List = [li + [d[li[0] + li[1]]] for li in List]
>>> Desired_List
[['a', 'z', 'g', 'g', 'g', 3], ['a', 'z', 'd', 'd', 'd', 3], ['a', 'z', 'z', 'z', 'd', 3], ['1', '2', 'f', 'f', 'f', 2], ['1', '2', '3', 'f', 'f', 2], ['1', '1', 'g', 'g', 'g', 1]]

我喜欢YS-L的
计数器
方法。这里是另一种方法:

>>> List = [['a','z','g','g','g'], ['a','z','d','d','d'], ['a','z','z','z','d'],['1','2','f','f','f'], ['1','2','3','f','f'], ['1','1','g','g','g']]
>>> d = {}
>>> for i in List:
       key = i[0] + i[1]
       if not d.get(key, None): d[key] = 1
       else: d[key] += 1


>>> Desired_List = [li + [d[li[0] + li[1]]] for li in List]
>>> Desired_List
[['a', 'z', 'g', 'g', 'g', 3], ['a', 'z', 'd', 'd', 'd', 3], ['a', 'z', 'z', 'z', 'd', 3], ['1', '2', 'f', 'f', 'f', 2], ['1', '2', '3', 'f', 'f', 2], ['1', '1', 'g', 'g', 'g', 1]]