在下面的代码行中,我试图处理track_ids
,set
不允许indexing
。
track_name = sp.track(track_ids[i])['name']
如何将track_ids
转换为list
,以便我能够将其编入索引?
编辑:这是完整的功能:
def filterBelowThreshold(product, filter_name, track_ids, values,
xsongs, threshold):
print product.upper(), 'PLAYLIST:'
for i, x in enumerate(values):
if x < threshold:
track_name = sp.track(track_ids[i])['name']
#append minding foreign track names
xsongs.add(track_name.encode("utf-8"))
print product.upper(),'-', "{} = {}".format(track_name.encode("utf-8"), x), filter_name
答案 0 :(得分:4)
您可以通过调用函数set
将list
转换为list(track_ids)
。
请注意,此新列表中的元素将没有有意义的排序,因此访问它就像使用枚举另一个列表的i
索引一样,假设您认为这些元素是正确的在values
和track_ids
中有点相关。
但是,如果你真的想让values
和track_ids
成对(可能是随机配对),你可以尝试这种更简洁的方式:
for val, track_id in zip(values,list(track_ids)):
答案 1 :(得分:0)
我会这样说:
[x for x in track_ids][index]
答案 2 :(得分:0)
无需循环播放,只需使用set
函数调用list
包裹,请参阅下面的示例
#Index Doesn't work with set
>>> set([1,2,3])[1]
Traceback (most recent call last):
File "python", line 1, in <module>
TypeError: 'set' object does not support indexing
#convert set to list like this and indexing would work.
>>> list(set([1,2,3]))[1]
=> 2