以数字和字母顺序排列两个元素元组的列表

时间:2015-11-30 23:23:49

标签: python list python-2.7 sorting tuples

我有一个作业,我必须从字符串中创建一个元组列表。我通过用.split()分割字符串来做到这一点。然后我遍历列表并将每个项目的项目和重复次数添加到dict中,如下所示:

 for word in s:         
    if word in count_dict:
        count_dict[word] += 1
    else:
        count_dict[word] = 1

在此之后,我使用以下方法创建元组列表:

pairs = count_dict.items()

其次是:

count_list = []
for pair in pairs:
    count_list.append(pair)

count_list.sort(key=lambda x: x[1], reverse=True)

我按照每个元组中最大的x [1]元素的顺序排序并反转列表,以便我拥有最重复的项目。我的实际任务是首先出现具有最高重复次数的元素,并使具有相同重复次数的元素按字母顺序排列在最大元素后面。

2 个答案:

答案 0 :(得分:0)

另一种反转数字排序的方法是在键函数中使数字为负数

现在将第二个排序顺序组合成一个元组

count_list.sort(key=lambda x: (-x[1], x[0]))

有必要摆脱reverse=True,否则字母排序将会被颠倒。

答案 1 :(得分:0)

count_list.sort(key=lambda x: int(x[1]), reverse=True)

lamba按字母顺序处理数字字符串(18位于reverse中的1503之前),但是按正确的数字顺序处理整数,因此将x[1]转换为整数就可以满足您的要求对