错误 'int' 对象不可订阅,如何将其转换为列表?
Error 'int' object is not subscriptable, How do i convert it to list?
我是 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))
为了 post,我缩短了列表,它应该计算 oscar_data
中的每个流派,并用流派和计数打印出来。
我以为我做对了,但我无法打印它,因为它returns错误
File "temp.py", line 63, in <module>
genre = row[0]
TypeError: 'int' object is not subscriptable
我应该怎么做才能使该 int 成为一个列表?
谢谢!
这里介绍你的错误:
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]
我是 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))
为了 post,我缩短了列表,它应该计算 oscar_data
中的每个流派,并用流派和计数打印出来。
我以为我做对了,但我无法打印它,因为它returns错误
File "temp.py", line 63, in <module>
genre = row[0]
TypeError: 'int' object is not subscriptable
我应该怎么做才能使该 int 成为一个列表?
谢谢!
这里介绍你的错误:
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]