逐个访问子列表以统计每个lis中变量的出现次数

2024-10-04 11:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个列表,其中包含数据文件中的条目,并为每一行拆分成一个子列表。你知道吗

[['Susan', 'McDonald', 'rat', 'aries', '34', 'yes', '1', '0'], ['Michael', 'Fox', 'ox', 'taurus', '54', 'yes', '2', '1'], ['Fred', 'Chai', 'tiger', 'gemini', '34', 'yes', '1', '0'], ['Abedin', 'Look', 'rat', 'aries', '23', 'yes', '0', '1'], ['Carlos', 'Pantro', 'ox', 'aries', '18', 'yes', '5', '3'], ['Chang', 'Green', 'ox', 'aries', '29', 'no', '1', '4'], ['Tatiana', 'Zing', 'ox', 'taurus', '33', 'no', '0', '0'], ['Ani', 'Williams', 'rat', 'taurus', '55', 'yes', '0', '1']]

每个列表都包含一个人的姓名、中国和希腊生肖、年龄以及其他与此人相关的数据。我不知道如何通过子列表找到,例如,所有黄道十二宫星座“牛”的人的平均年龄。你知道我该怎么做吗?提前谢谢。你知道吗

def displayZodiacStats(zodiacSign, sourceList):
    print(zodiacSign, "stats")
    sublists = [sourceList[x:x+8] for x in range(0, len(sourceList), 8)]

    numberOfPeople = sourceList.count(zodiacSign)

sumOfAges = 0
countOfEntries = 0
for aLine in sublists
    entries = 
    countOfEntries = countOfEntries+ 1
    sumOfAges = sumOfAges + int(entries[5])
    print(“Avg. age “ + str(sumOfAges/countOfEntries))

Tags: noin列表foryesoxprintaries
1条回答
网友
1楼 · 发布于 2024-10-04 11:30:14

您可以这样做(未测试,但应该可以工作):

zodiacs = ['ox']  #you could add multiple values here to search for them all
age_list = []
for sublist in sourceList:
    age = sublist[4]
    zodiac_sign = sublist[2]
    if zodiac_sign in zodiacs:
        age_list.append(age)

print 'Average age: {}'.format(sum(age_list)/len(age_list))

或者对于获取age_list列表的单行方法:

age_list = [sublist[4] for sublist in sourceList if sublist[2] in zodiacs]

相关问题 更多 >