Python 错误';int';对象不可下标,如何将其转换为列表?

Python 错误';int';对象不可下标,如何将其转换为列表?,python,data-analysis,Python,Data Analysis,我是python新手,还在学习, 我有以下代码: # columns are [0]title [1]year [2]rating [3]length(min) [4]genre [5]budget($mil) [6]box_office_gross($mil) oscar_data = [ ["The Shape of Water", 2017, 6.914, 123, ['sci-fi', 'drama'], 19.4, 195.243464], [&qu

我是python新手,还在学习, 我有以下代码:

# columns are [0]title [1]year [2]rating [3]length(min) [4]genre [5]budget($mil) [6]box_office_gross($mil)
oscar_data = [
    ["The Shape of Water", 2017, 6.914, 123, ['sci-fi', 'drama'], 19.4, 195.243464],
    ["Moonlight", 2016, 6.151, 110, ['drama'], 1.5, 65.046687],
    ["Spotlight", 2015, 7.489, 129, ['drama', 'crime', 'history'], 20.0, 88.346473],
    ["Birdman", 2014, 7.604, 119, ['drama', 'comedy'], 18.0, 103.215094]
]


def filter_by_genre(data, genre):
    result = []
    for row in data:
        genres = row[4]
        if genre in genres:
            result.append(row)
    return result


all_genres = [
    'sci-fi', 'drama', 'crime', 'history', 'comedy', 'biography',
    'thriller', 'war', 'melodrama', 'action', 'adventure', 'western',
    'mystery', 'horror'
]

genres_counts = []
for genre in all_genres:
    count = len(filter_by_genre(oscar_data, genre))
    genres_counts.append(genre)
    genres_counts.append(count)



print('Genre        | Number')
print('------------------------')
for row in genres_counts:
    genre = row[0]
    count = row[1]
    print('{: <11} | {: >10}'.format(genre, count))
我该怎么做才能把它列出来


谢谢大家!

此处介绍了您的错误:

genres_counts.append(genre)
genres_counts.append(count)
可以将流派和计数作为单独的值追加,而不是作为集合追加。将这两行替换为:

genres_counts.append((genre, count))
更好的方法是使用列表理解:

genres_counts = [(genre, len(filter_by_genre(oscar_data, genre))  
                 for genre in all_genres]

是否要将int转换为一个范围?例如,5将变为列表[0、1、2、3、4]。谢谢,它现在可以工作了!我会尽快接受答案。为什么我需要一个双
(())
?内括号定义了一个2元素元组。此外,请查看编辑。
genres_counts = [(genre, len(filter_by_genre(oscar_data, genre))  
                 for genre in all_genres]