Skip to main content
 首页 » 编程设计

python之python 3.2 中的大括号集和排序

2025年05月04日17cloudgamer

您好,我有两个问题:

  1. 我正在尝试使用以下形式构建两个集合:new = [{24,33},{12,13},{17,19},....] 。基本上我有两个列表形式的数据,一个叫做 N = [24,12,17,....] 另一个是 z = [33,13,19 ,....]。我一直在尝试使用以下方法实现此目的:

    new=[] 
    for i in range(len(z)): 
        new.append({z[i]}) 
        new.extend({N[i]}) 
    print(new) 
    

    并尝试了使用或不使用大括号附加和扩展的多种变体。

  2. 一旦 1) 实现,我想根据每组中第二项的大小重新排列新的,即按 z 的升序排列,所以我想得到:

    new=[{12,13},{17,19},{24,33}] 
    

请您参考如下方法:

使用 zip() 对两个列表进行配对:

new = [{a, b} for a, b in zip(N, z)] 

但是集合是无序的,所以没有“第二个值”。您也许可以对最小值进行排序:

new.sort(key=lambda s: min(s)) 

如果您需要根据 z 的值对其进行排序,请在创建集合之前执行此操作:

from operator import itemgetter 
 
new = [{a, b} for a, b in sorted(zip(N, z), key=itemgetter(1))] 

但是如果这些真的是 x, y 坐标,那么只需使用 zip() 和 sorted() 给你一个序列元组:

new = sorted(zip(N, z), key=itemgetter(1)) 

set() 只包含唯一值:

>>> {1, 1} 
set([1]) 

元组是一个有序的(不可变的)序列:

>>> (1, 1) 
(1, 1)