查找列表中每个列表中元素的出现次数

时间:2017-10-28 13:01:29

标签: python list nested position

这里我有一个嵌套列表:

[['a,b,c,d,e’], [‘d,e,c,b,a’], [‘e,b,a,e,c’], ['a,c,b,e,d'], [‘e,d,c,b,a’], [‘a,c,b,d,e']]

我想计算每个列表开头的“a”出现次数,这样就是3.我也希望能够对列表中的每个字母做同样的事情,所以我知道每个列表的第二个位置的“b”数是2。 如果您将每个列表放在彼此之上并向下看列,这可能更容易想象。

我希望能够提供信件和位置来扫描并接收该信件在该位置的出现次数。我希望我很清楚。

这是我到目前为止所尝试的内容:

number=sum(x.count("a") for x in data[0][0])

2 个答案:

答案 0 :(得分:1)

在大多数情况下,您可以使用以下内容:

data = [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']]
letter = 'b'
pos = 1
result = sum(1 for i in data if letter in i[0] and i[0].split(',')[pos] == letter)

print(result)

输出:

2

获得更准确,更强大的解决方案:

data = [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']]
letter = 'b'
pos = 1
result = 0

for i in data:
    if letter in i[0]:
        items = i[0].split(',')
        if pos < len(items) and items[pos] == letter:
            result += 1

print(result)

答案 1 :(得分:0)

您应该使用函数而不仅仅是循环。因为更容易将参数指定为索引号和字母:

以下是具有功能的解决方案:

Relation
  

使用索引为0的'a'进行测试:

list_1= [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']]

    def find(index,letter,list_1):
        count=0
        for item in list_1:
            for subitem in item:
                if subitem[index]==letter:
                    count+=1
        return count

输出:

print(find(0, 'a', list_1))

使用索引为2的'b'进行测试:

3

输出:

print(find(2, 'b', list_1))