print(" ".join([f"{t}{'小时' if i == 0 else '分钟' if i == 1 else '秒'}" for i, t in enumerate(videos_info['duration'])])) TypeError: list indices must be integers or slices, not str
时间: 2024-03-31 07:35:24 浏览: 31
这个错误通常是由于代码中尝试使用字符串作为列表的索引引起的。在这个特定的错误中,videos_info['duration']可能是一个字典对象而不是一个列表对象。
你可以尝试使用print(videos_info['duration'])来查看videos_info['duration']的类型。如果它确实是一个字典对象,你需要使用正确的键来访问它的值。例如,如果键是'duration_hours','duration_minutes'和'duration_seconds',你可以这样做:
print(" ".join([f"{t}{'小时' if i == 'duration_hours' else '分钟' if i == 'duration_minutes' else '秒'}" for i, t in videos_info['duration'].items()]))
这应该能够解决这个错误。
相关问题
lst=["1","2","3","4","5"] s1="" for c in lst: s1=s1+c+" " s2=" ".join(lst) if s1==s2: print("yes") else: print("no")
```python
lst = ["1", "2", "3", "4", "5"]
s1 = ""
for c in lst:
s1 = s1 + c + " "
s2 = " ".join(lst)
if s1 == s2:
print("yes")
else:
print("no")
```
输出结果为:
```
yes
```
这段代码首先定义了一个列表`lst`,然后使用循环遍历列表中的每个元素,并将每个元素与空格连接起来,存储在变量`s1`中。接下来,使用`join`方法将列表中的元素用空格连接起来,存储在变量`s2`中。最后,通过比较`s1`和`s2`的值,判断它们是否相等。如果相等,则输出"yes",否则输出"no"。
print(" ".join([f"{t}{'小时' if i == 'duration_hours' else '分钟' if i == 'duration_minutes' else '秒'}" for i, t in videos_info['duration'].items()])) # 打印每个视频的信息 TypeError: list indices must be integers or slices, not str
这个错误是因为你正在尝试使用字典的items()方法,它返回一个以键值对为元素的元组列表。在这个列表中,每个元素是一个元组,其中第一个元素是键,第二个元素是值。
当你在列表推导中使用items()方法时,你需要使用元组的索引访问键和值,而不是使用字典的键。因此,你可以这样修改代码:
print(" ".join([f"{t}{'小时' if k == 'duration_hours' else '分钟' if k == 'duration_minutes' else '秒'}" for k, t in videos_info['duration'].items()]))
这样,你就可以正确地访问每个元组中的键和值,并打印出每个视频的信息。
阅读全文