我已阅读并尝试实施Stack Overflow周围的建议。
在Python 3.6+中,我有一个类似于这样的元组列表:
tuple_list=[(a=3,b=gt,c=434),(a=4,b=lodf,c=We),(a=3,b=gt,c=434)]
创建
for row in result:
tuple_list.append(var_tuple(row['d'], row['f'], row['q']))
我想计算列表中重复项的数量,然后对列表进行排序,以便重复次数最多的数字位于顶部,因此我使用了
tuple_counter = collections.Counter(tuple(sorted(tup)) for tup in tuple_list)
但这会导致错误,因为
TypeError: unorderable types: int() < str()
我也试过了,但它似乎并没有按最高的柜台排序。
tuple_counter = collections.Counter(tuple_list)
tuple_counter = sorted(tuple_counter, key=lambda x: x[1])
以及
tuple_counter = collections.Counter(tuple_list)
tuple_counter = tuple_counter.most_common()
有更好的方法吗?
答案 0 :(得分:1)
tuple
包含不同的type
s tuple_counter = collections.Counter(tuple(sorted(tup)) for tup in tuple_list)
此行错误表示无法订购int < str
。在评估任何一个之前,生成器表达式必须是,并且sorted(tup)
会立即中断。为什么?从错误中,我确信tup
包含整数和字符串。您无法在同一列表中对整数和字符串进行排序,因为您无法将整数和字符串与<
进行比较。如果您有比较int
和str
的方法,请尝试使用sorted(tup, key = function)
函数订购int
和str
s。
由于您希望按出现次数计算,请尝试以下方法:
sorted_tuples = sorted(tuple_list, key = tuple_list.count)
这使用tuple_list
的计数器功能作为键对元组进行排序。如果要对降序进行排序,请执行sorted(tuple_list, key = tuple_list.count, reversed = True)
。