Python-将集合转换为列表

Python-将集合转换为列表,python,list,set,Python,List,Set,在下面的代码行中,我正在尝试处理跟踪id,这是一个集合,它不允许索引 track_name = sp.track(track_ids[i])['name'] 如何将track\u id转换为列表,以便为其编制索引 编辑:这是完整的功能: def filterBelowThreshold(product, filter_name, track_ids, values, xsongs, threshold): print product.upper(), 'PLAYLIST:'

在下面的代码行中,我正在尝试处理
跟踪id
,这是一个
集合
,它不允许
索引

track_name = sp.track(track_ids[i])['name']
如何将
track\u id
转换为
列表
,以便为其编制索引

编辑:这是完整的功能:

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
def filterBelowThreshold(产品、过滤器名称、跟踪ID、值、,
歌曲(基本要求):
打印product.upper(),“播放列表:”
对于枚举中的i,x(值):
如果x<阈值:
track_name=sp.track(track_id[i])['name']
#附加minding外来曲目名称
添加(音轨名称编码(“utf-8”))
打印product.upper(),'-',“{}={}”.format(track_name.encode(“utf-8”),x),filter_name
我想说:

[x for x in track_ids][index]

无需执行循环,只需使用
列表
函数调用包装
集合
,请参见下面的示例

#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
#索引不适用于集合
>>>集合([1,2,3])[1]
回溯(最近一次呼叫最后一次):
文件“python”,第1行,在
TypeError:“set”对象不支持索引
#像这样将集合转换为列表,索引就可以了。
>>>列表(集合([1,2,3]))[1]
=> 2

您可以通过调用函数
list(track\u id)
集合
转换为
列表

请注意,此新列表中的元素没有有意义的顺序,因此,假设您认为
值中的元素与
跟踪ID
中的元素有一定的相关性,那么像使用枚举在另一个列表上的
i
索引那样访问它是不正确的

但是,如果您确实想获得
跟踪ID
配对(可能是随机配对),您可以尝试以下更简洁的方式:

for val, track_id in zip(values,list(track_ids)):

你可以用for循环来检查它,不是吗?此外,您还可以尝试将该集合传递到
list()
。由于它是一个不可索引(无需排序)的集合,您无法保证
values
中的索引
i
实际上引用了一个特定的
track\u id
,下面的问题是,track\u id和值是以何种方式关联的,如果是这样的话,您是否希望在调用函数之前加入它们,以确保您的订单不会被打乱。(或者,如果您希望在列表上应用筛选器),OP已发布完整的函数。也许你应该将你的建议应用到他们的代码的完整版本?但是集合是无序的,因此列表也是无序的-索引到它是没有意义的。此外,你可以通过调用函数
list(track_id)
@fstab将
集合
转换成
列表
。想回答吗?@data\u garden:你是什么意思?这里不需要排序,只要我有一个
歌曲列表(曲目名称)和另一个列表,以及它们相应的
曲目ID