Python - 将集合转换为列表

时间:2016-10-18 15:27:08

标签: python list set

在下面的代码行中,我试图处理track_idsset不允许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

3 个答案:

答案 0 :(得分:4)

您可以通过调用函数setlist转换为list(track_ids)

请注意,此新列表中的元素将没有有意义的排序,因此访问它就像使用枚举另一个列表的i索引一样,假设您认为这些元素是正确的在valuestrack_ids中有点相关。

但是,如果你真的想让valuestrack_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