查找嵌套列表中项目的百分比-Python [关闭]

问题描述 投票:0回答:1

我试图弄清楚如何创建一个带有百分比参数的函数,以输出嵌套列表中出现的项目的百分比。

Ex:

A = [['A', 'B', 'C'],['F'],['A', 'B'], ['C', 'A'], ['F', 'A', 'B']]

some_function(A, percent_param = 50%)

结果将显示类似:

A = 80%B = 60%

每个列表都将像一个集合,并且将具有唯一的元素/项目。因此,我需要计算每个集合中项目的数量,然后除以嵌套列表的数量。然后使用该参数作为截止值以显示项目。

编辑:为了澄清这是我到目前为止所拥有的..我不想重复这些内容

XX = [['A','B','C'],['F'],['A','B'],['C','A'],['F', 'A','B']]

def myfunction(XX,top_percent):

list_length = len(XX)

collect_items = []

for one_list in XX:

    for item in one_list:

         Number_of_occurances = sum(x.count(item) for x in XX)

         if (Number_of_occurances/list_length)*100 >= top_percent:

            print(item, " :", (Number_of_occurances/list_length)*100)

myfunction(XX,top_percent = 60)

python nested-lists
1个回答
0
投票

您可以做类似的事情:

def some_function(A, letter):
    return sum(100 for l in A if letter in l)/len(A)

some_function(A, 'A')
# 80.0

some_function(A, 'B')
# 60.0

要格式化结果并删除小数,可以添加:

def some_function(A, letter):
    return f'{sum(100 for l in A if letter in l)//len(A)}%'

some_function(A, 'A')
# 80%

或者正如@olvin指出的,我们可以使用类型说明符进一步格式化:

def some_function(A, letter):
    return f'{sum(1 for l in A if letter in l)/len(A):.0%}' 
© www.soinside.com 2019 - 2024. All rights reserved.