【问题标题】:Python Dictionary error list indices must be integers or slices, not strPython 字典错误列表索引必须是整数或切片,而不是 str
【发布时间】:2021-05-08 10:38:40
【问题描述】:

我在下面有一本字典,但试图获取 IMDB 分数大于 5 的电影列表,但不断收到错误“列表索引必须是整数或切片,而不是 str”

movies = [{

"name": "Usual Suspects", 
"imdb": 7.0,
"category": "Thriller"
},
{
"name": "Hitman",
"imdb": 6.3,
"category": "Action"
},
{
"name": "Dark Knight",
"imdb": 9.0,
"category": "Adventure"
},
{
"name": "The Help",
"imdb": 8.0,
"category": "Drama"
}]

任何帮助将不胜感激

【问题讨论】:

  • 请在这里提出问题时,请始终尝试粘贴您使用过的代码,这有助于理解,而且大多数时候,如何解决问题。 (这是我们很好理解的问题)

标签: python dictionary


【解决方案1】:

经典方式:

# lst = []
for movie in movies:
    if movie['imdb'] > 5:
        print (movie['name'])
        # lst.append(movie['name'])

输出:

Usual Suspects
Hitman
Dark Knight
The Help

使用列表理解:

print ([ movie['name'] for movie in movies if movie['imdb'] > 5 ])

输出:

['Usual Suspects', 'Hitman', 'Dark Knight', 'The Help']

【讨论】:

    【解决方案2】:

    你有一个字典列表..试试下面的代码

    movies_with_good_rating = []
    for movie in movies:
        if int(movie.get('imdb')) > 5:
           movies_with_good_rating.apppend(movie.get('name'))
    print(movies_with_good_rating)
    

    【讨论】:

      【解决方案3】:

      你有一个字典列表。需要的输出是 Imdb 大于 5 的电影列表。试试下面的代码。

          movies_list = []
          for dictionary in movies :
              if dictionary["imdb"] > 5:
                  movies_list.append(dictionary["name"])
          print(movies_list)
      

      输出:

          ['Usual Suspects', 'Hitman', 'Dark Knight', 'The Help']
      

      【讨论】:

        【解决方案4】:

        这是经典

        
        for i in range(0,len(movies)) :
            if movies[i]["imdb"] > 5:
                print (movies[i]['name'])
             
        

        【讨论】:

          猜你喜欢
          • 2017-04-12
          • 1970-01-01
          • 1970-01-01
          • 2017-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-25
          • 2020-05-14
          相关资源
          最近更新 更多