相关疑难解决方法(0)

如何按字典值对字典列表进行排序?

我有一个字典列表,并希望每个项目按特定的属性值排序.

考虑下面的数组,

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
Run Code Online (Sandbox Code Playgroud)

排序时name,应该成为

[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]
Run Code Online (Sandbox Code Playgroud)

python sorting dictionary list data-structures

1722
推荐指数
19
解决办法
69万
查看次数

按多个属性对列表进行排序?

我有一份清单清单:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
Run Code Online (Sandbox Code Playgroud)

如果我想按一个元素排序,比如高/短元素,我可以通过s = sorted(s, key = itemgetter(1)).

如果我想作为排序依据两个高大/ short和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法?

python sorting

398
推荐指数
5
解决办法
25万
查看次数

使用比较器功能进行排序

所以我正在使用一些预先存在的比较器来比较两个元组中的某些值,如果第一个大于第二个,则返回true,否则返回false.以下是其中一个的代码:

def cmpValue(subInfo1, subInfo2):
    """
    Returns True if value in (value, work) tuple subInfo1 is GREATER than
    value in (value, work) tuple in subInfo2
    """
    # TODO...
    if subInfo1[0] > subInfo2[0]:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

现在,我有一个字典,其上面有许多类型的元组条目.我想以相反的顺序对它们进行排序,但我真的不明白我将如何实现这一目标.我想的是:

sortedDict = sorted(subjects, key=comparator, reverse = True)
Run Code Online (Sandbox Code Playgroud)

但是我不知道要传递给比较器的是什么,因为每个比较器都有两个参数(subInfo1,subInfo2).我无法改变比较器功能.

python

24
推荐指数
3
解决办法
6万
查看次数

用另外两个列表在Python中对列表进行排序

我的问题与这两个链接12非常相似:

我有三个不同的列表.我想基于List2对List1进行排序(按升序排序).但是,我在List2中重复了一遍.然后我想按List3对这些重复进行排序(按降序排列).足够困惑?

是)我有的:

List1 = ['a', 'b', 'c', 'd', 'e']
List2 = [4, 2, 3, 2, 4]
List3 = [0.1, 0.8, 0.3, 0.6, 0.4]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

new_List1 = ['b', 'd', 'c', 'e', 'a']
Run Code Online (Sandbox Code Playgroud)

'b'出现在'd'之前,因为0.8> 0.6.'e'出现在'a'之前,因为0.4> 0.1.

有帮助吗?

谢谢!

python sorting list

12
推荐指数
2
解决办法
1559
查看次数

在python中按多个条件排序

我是编程新手,现在我正在用python编写一个排行榜.我想以第一分排序我的联赛,如果有两支球队有相同的分数,我想根据球门差异对他们进行排序,如果他们有相同的净胜球,我想按名字排序.

第一个条件非常简单,并且工作如下:

table.sort(reverse=True, key=Team.getPoints)
Run Code Online (Sandbox Code Playgroud)

如何插入以下两个条件?

python sorting

8
推荐指数
2
解决办法
6678
查看次数

将dict的dict转换为pandas中的dataframe

dict喜欢这样的:

data = {'1':{'a':10, 'b':30}, '2':{'a':20, 'b':60}}
Run Code Online (Sandbox Code Playgroud)

我想转换成这样的数据帧:

x   y   z
1   a   10
1   b   30
2   a   20
2   b   60
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

python dictionary dataframe python-3.x pandas

8
推荐指数
2
解决办法
2424
查看次数

按两个元素对嵌套列表进行排序

假设我有一个如下列表:

[['Harry', '4'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Ben', '10']]
# we can say the first element in it's lists is `name`, the second is `score`
Run Code Online (Sandbox Code Playgroud)

我想把它分类:

[['Anthony', '10'], ['Ben', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Run Code Online (Sandbox Code Playgroud)

因此,首先按分数降序对其进行排序,然后按名称按升序对其进行排序.


我试过了:

>>> sorted(l, key=lambda x: (int(x[1]), x[0]))
[['Harry', '4'], ['Joe', '6'], ['Adam', '7'], ['Anthony', '10'], ['Ben', '10']]
Run Code Online (Sandbox Code Playgroud)

它正在工作,所以现在我只需要逆转它:

>>> sorted(l, key=lambda x: (int(x[1]), x[0]), reverse=True)
[['Ben', '10'], ['Anthony', '10'], ['Adam', '7'], ['Joe', '6'], ['Harry', '4']]
Run Code Online (Sandbox Code Playgroud)

啊,reverse=True简单地颠倒了列表但没有给出期望输出.所以我只想反转输出int(x[1]),但不是x[0] …

python sorting list

5
推荐指数
1
解决办法
584
查看次数

Python:如何在数字主要排序中执行二级降序字母排序

按两个标准对 Python 列表进行排序中, Fouad 给出了以下答案:

sorted(list, key=lambda x: (x[0], -x[1]))
Run Code Online (Sandbox Code Playgroud)

我想将以下列表主要按元组列表排序,主要按每个元素中的第二项按升序排列,然后按降序排列第一个(字母)项:

[('Ayoz', 1, 18, 7), ('Aidan', 2, 4, 9), ('Alan', 2, 4, 9), ('Arlan', 5, 6, 7), ('Luke', 15, 16, 2), ('Tariq', 5, 4, 2)] 
Run Code Online (Sandbox Code Playgroud)

给出答案:

[('Ayoz', 1, 18, 7), ('Alan', 2, 4, 9), ('Aidan', 2, 4, 9), ('Tariq', 5, 4, 2), ('Arlan', 5, 6, 7), ('Luke', 15, 16, 2)]
Run Code Online (Sandbox Code Playgroud)

如果可能,请使用上述方法。我试过

tlist = [('Ayoz', 1, 18, 7), ('Aidan', 2, 4, 9), ('Alan', 2, 4, 9), ('Arlan', 5, 6, 7), …
Run Code Online (Sandbox Code Playgroud)

python sorting python-3.x

5
推荐指数
1
解决办法
1935
查看次数

按年排序列表,然后按月排序

我有一个列表列表,看起来像这样:

dateList = [['2014', '4'], ['2015', '6'], ['2017', '6'], ['2016', '2'], ['2016', '3'], ['2017', '9'], ['2016', '6'], ['2017', '3'], ['2014', '8'], ['2014', '10'], ['2017', '10'], ['2014', '9'], ['2014', '3'], ['2015', '11'], ['2015', '2']]
Run Code Online (Sandbox Code Playgroud)

我一直试图按年份排序,然后按月计算.我已经成功地按年使用它进行分类

sortedList = sorted(dateList, key = lambda x: int(x[0]))
Run Code Online (Sandbox Code Playgroud)

但是,我无法想出一种方法可以在按月保持年份升序的同时按月分类.

python sorting list python-3.x

3
推荐指数
1
解决办法
1441
查看次数

订单列表根据两个项目

假设我有一个由多个列表组成的列表,每个列表包含两个项目:

a = [[14, 0.5], [12, 0.8], [22, 0.6], [15, 0.2], [17, 0.5], [18, 0.4]]
Run Code Online (Sandbox Code Playgroud)

我需要先根据每个列表中的第二项从最大到最小重新排序此列表,然后根据从最小到最大第一项.

我知道如何使用第二项和第一项第二项根据两项重新排序列表:

b = sorted(a, key=lambda item:(item[1], item[0]))
b = [[15, 0.2], [18, 0.4], [14, 0.5], [17, 0.5], [22, 0.6], [12, 0.8]]
Run Code Online (Sandbox Code Playgroud)

但这种返回从排序的列表最小到最大这两个项目,这不是我所需要的.

b应该是这样的:

b = [[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]
Run Code Online (Sandbox Code Playgroud)

python list

1
推荐指数
1
解决办法
178
查看次数

Python按值按键排序字典项

我有以下字典:

{1: (8, 3), 0: (8, 0), 2: (2, 3), 3: (2, 0)}
Run Code Online (Sandbox Code Playgroud)

我想通过元组键然后通过字典的键对它进行排序,以便上面将:

 [{1: (2, 3), 3: (2, 0),0: (8, 3), 1: (8, 0)}]
Run Code Online (Sandbox Code Playgroud)

我写了以下内容:

result_list = sorted(codebook.items(), key= lambda item: item[1][0])
Run Code Online (Sandbox Code Playgroud)

这通过元组键排序,但之后不是字典键.

我该怎么做?

python python-3.3

1
推荐指数
1
解决办法
597
查看次数

我如何按其中一个值然后另一个值对元组列表进行排序?

我会说到这一点,我有这个:

    ocurrencias = [('quiero', 1), ('aprender', 1), ('a', 1), ('programar', 1), ('en', 1), ('invierno', 2), ('hace', 1), ('frio', 1), ('este', 1)]
Run Code Online (Sandbox Code Playgroud)

我想通过元组的第二个值然后通过它们的字符串值对它进行排序,然后打印每个元素来获取:

    output:invierno 2
           a 1
           aprender 1
           en 1
           este 1
           frio 1
           hace 1
           programar 1
           quiero 1
Run Code Online (Sandbox Code Playgroud)

不知道我是否说得足够清楚,但我不是很精通英语,所以请原谅我.

提前致谢

python tuples list python-3.x

-1
推荐指数
1
解决办法
189
查看次数