Python 将结果列表转换为一个元组(如描述中所述,使用tuple函数),并且结果元组需要位于列表中

Python 将结果列表转换为一个元组(如描述中所述,使用tuple函数),并且结果元组需要位于列表中,python,list,sorting,dictionary,tuples,Python,List,Sorting,Dictionary,Tuples,下面是我从字典列表和元组排序数据中提取的代码 def compress(data): res = [] for idx, sub in enumerate(data, start=0): if idx == 0: res.append(tuple(sub.keys())) res.append(list(sub.values())) else: res.append(list(

下面是我从字典列表和元组排序数据中提取的代码

def compress(data):
    res = []
    for idx, sub in enumerate(data, start=0):
        if idx == 0:
            res.append(tuple(sub.keys()))
            res.append(list(sub.values()))
        else:
            res.append(list(sub.values()))
    return tuple(res)

data = [
    {"a": 1, "b": 2, "c": 3},
    {"a": 4, "c": 6, "b": 5}
]

print(compress(data))
预期结果是:

‘a’、‘b’、‘c’、[1、2、3、6、5、4]

根据我的代码,无法在预期结果中重新调用。

应该是

def compress(data):
    res = []
    for idx, sub in enumerate(data, start=0):
        if idx == 0:
            res.append(tuple(sub.keys()))
            res.append([])
            res[-1].append(tuple(sub.values()))
        else:
            res[-1].append(tuple(sub.values()))
    return tuple(res)

使用列表理解:

def压缩数据: keys=tuplesorteddata[0]。keys 值=[tuple[k]表示数据中的d对应于键中的k] 返回键、值 >>>压缩[{a:1,b:2,c:3},{a:4,c:6,b:5}] ‘a’、‘b’、‘c’、[1、2、3、4、5、6] 可选:缺少密钥 如果某些字典中可能缺少某些键,则可以使用所有字典中的所有键,然后使用set删除重复键,然后使用d.getk、default_值而不是d[k]:

def compressdata,默认值=无: keys=tuplesortedsetk for d in数据中的k in d.keys values=[tuple.getk,数据中d的键中k的默认值] 返回键、值 >>>数据=[{'a':1,'b':2,'c':3},{'a':11,'b':12,'d':14}] >>>压缩数据,0 ‘a’、‘b’、‘c’、‘d’、[1、2、3、0、11、12、0、14] 可选:存储此数据的另一种方法 您可以将此词典列表重构为列表词典:

def重构数据: keys=数据[0]。keys 返回{k:[d[k]表示数据中的d]表示键中的k} >>>重构[{a:1,b:2,c:3},{a:4,c:6,b:5}] {'a':[1,4],'b':[2,5],'c':[3,6]} 同样,您可以小心丢失关键点:

def重构数据: keys=为d键中的k设置数据中的d键 返回{k:[d[k]表示数据中的d,如果k in d]表示键中的k} >>>重构[{'a':1,'b':2,'c':3},{'a':11,'b':12,'d':14}] {'d':[14],'a':[1,11],'c':[3],'b':[2,12]}
所以我创建了你想要的,你可以把它放在一个函数中,如果你想的话

数据=[ {a:1,b:2,c:3}, {a:4,c:6,b:5} ] 键=[],[] 对于数据中的d: items=listd.items l=[] 对于项目中的i: l、 附录一[1] 如果我[0]不在键[0]中: 键[0]。附录[0] 其他: 持续 键[1]。appendtuplel 键=元组键 印刷品:

(('a', 'b', 'c'), [(1, 2, 3), (6, 5, 4)])

您的意思是:“a”、“b”、“c”、“1、2、3、4、5、6]?def compressdata:返回tupledata[0]。键,[tuplex.values for x in data]@boobooboo不是,结果必须是6,5,46,5,4分别是键c、b和a的值。你是说我们应该使用那些值吗?def compressdata:return'a'、'b'、'c'、[1,2,3,6,5,4]似乎有效,但我无法解释原因。非常感谢。它现在可以工作了,因为我可以将结果转换为列表中的元组。但我仍然面临排序函数中的一些困难,将值排序为6,5,4,如果有任何建议,我真的很感激。这会产生:'a','b','c',[1,2,3,4,6,5],这是公认的答案吗?要按降序排序第二个列表,请使用sorted…,reverse=TrueMy代码现在是def compressdata:res=[]对于idx,enumeratedata中的sub,start=0:如果idx==0:res.appendtuplesub.keys res.append[]res[-1]。appendtuplesub.values else:res[-1]。appendtuplesortedsub.values,reverse=True返回tupleresso对于预期结果,它应该在元组中为值设置一个列表,不过这一个就快到了
(('a', 'b', 'c'), [(1, 2, 3), (6, 5, 4)])