相关疑难解决方法(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万
查看次数

从与条件匹配的iterable中获取第一个项目

我想从符合条件的列表中获取第一项.重要的是,生成的方法不会处理整个列表,这可能非常大.例如,以下功能就足够了:

def first(the_iterable, condition = lambda x: True):
    for i in the_iterable:
        if condition(i):
            return i
Run Code Online (Sandbox Code Playgroud)

这个函数可以用这样的东西:

>>> first(range(10))
0
>>> first(range(10), lambda i: i > 3)
4
Run Code Online (Sandbox Code Playgroud)

但是,我想不出一个好的内置/单线来让我这样做.如果我不需要,我不特别想复制这个功能.是否有内置方法可以使第一个项目符合条件?

python iterator

264
推荐指数
11
解决办法
15万
查看次数

如何在Python 3中使用自定义比较函数?

Python 2.x中,我可以将自定义函数传递给sorted和.sort函数

>>> x=['kar','htar','har','ar']
>>>
>>> sorted(x)
['ar', 'har', 'htar', 'kar']
>>> 
>>> sorted(x,cmp=customsort)
['kar', 'htar', 'har', 'ar']
Run Code Online (Sandbox Code Playgroud)

因为,在我的语言中,配偶带有这个命令

"k","kh",....,"ht",..."h",...,"a"
Run Code Online (Sandbox Code Playgroud)

但在Python 3.x中,看起来我无法传递cmp关键字

>>> sorted(x,cmp=customsort)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)

有没有其他选择,还是我应该编写自己的排序函数?

注意:我通过使用"k","kh"等进行了简化.实际字符是Unicodes甚至更复杂,有时元组前后有元音,我已经完成了自定义比较功能,所以那部分还可以.唯一的问题是我无法将自定义比较函数传递给sorted或.sort

python sorting python-3.x

85
推荐指数
4
解决办法
5万
查看次数

如何在Python 3中使用cmp()?

我无法让命令cmp()工作.

这是代码:

a = [1,2,3]
b = [1,2,3]
c = cmp(a,b)
print (c)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "G:\Dropbox\Code\a = [1,2,3]", line 3, in <module>
    c = cmp(a,b)
 NameError: name 'cmp' is not defined
[Finished in 0.1s]
Run Code Online (Sandbox Code Playgroud)

python python-3.x

19
推荐指数
2
解决办法
3万
查看次数

Python 2.5字典2键排序

我有一个200,000项的字典(键是字符串,值是整数).

什么是打印项目的最佳/最pythonic方式,按降序值排序,然后按升序键(即2键排序)?

 a={ 'keyC':1, 'keyB':2, 'keyA':1 }
b = a.items()
b.sort( key=lambda a:a[0])
b.sort( key=lambda a:a[1], reverse=True )
print b
>>>[('keyB', 2), ('keyA', 1), ('keyC', 1)]
Run Code Online (Sandbox Code Playgroud)

python

15
推荐指数
2
解决办法
3万
查看次数

使用两个键排序Python列表,但只有一个按相反顺序排序

我想知道用两个键对元组列表进行排序的Pythonic方法是什么,其中用一个(并且只有一个)键进行排序将是相反的顺序,而用另一个键进行排序将不区分大小写.更具体地说,我有一个包含元组的列表:

myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码用两个键对其进行排序:

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))
Run Code Online (Sandbox Code Playgroud)

要按相反顺序排序,我可以使用

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)
Run Code Online (Sandbox Code Playgroud)

但这会按两个键的相反顺序排序.

任何提示都非常感谢.

python sorting tuples key

9
推荐指数
3
解决办法
4906
查看次数

在Python中对CSV进行排序

我假设使用Python在多个文本/数字字段上排序CSV文件将是一个已经解决的问题.但我无法在任何地方找到任何示例代码,除了专注于排序日期字段的特定代码.

如何按顺序对多个字段中的相对较大的CSV文件(数万行)进行排序?

Python代码示例将不胜感激.

python csv sorting

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

Python:如何通过两个字段对dicts数组进行排序?

我对Python有些新意见......

我通过读取包含JSON消息的文件获得了一系列的dicts,即使用以下内容:

import json
ws = []
with open('messages.txt', 'r') as f:
    for line in f:
        data = json.loads(line)
        ws.append(data)
Run Code Online (Sandbox Code Playgroud)

除了别的以外,每个JSON消息还有三个字段:"日期"和"类型"和"位置".我需要先按日期对数组进行排序,然后按相同日期的每个块中的类型进行排序,然后按相同类型的每个块中的位置进行排序.我怎样才能做到这一点?太多了!

python arrays sorting

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

如何按第二个元素但有条件对元组列表进行排序

假设我有这个元组列表:

[(30, 'B'), (50, 'B'), (40, 'C'), (10, 'A'), (80, 'A'), (5, 'A')]
Run Code Online (Sandbox Code Playgroud)

我需要按元组的第二个元素按降序对元组进行排序,但条件是具有相同第二个元素的所有元组都彼此相邻。

所以,它应该看起来像

[(80, 'A'), (10, 'A'), (5, 'A'), (50, 'B'), (30, 'B'), (40, 'C')]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python tuples list

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

Python按键排序,打破关系

original = ["aga", "aaa", "aba"]

dict = {
    "aba": 1,
    "aaa": 0,
    "aga": 1
}
Run Code Online (Sandbox Code Playgroud)

我需要按dict值排序,并且断路器需要保持原始顺序,我该怎么做?示例非常简化.

我试过了:

final = sorted(sorted(original, key=lambda x: (dict[x]), key=original.index))
Run Code Online (Sandbox Code Playgroud)

python sorting lambda key

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

如何根据两个不同的值对字典列表进行排序?

我有一个包含类似于以下示例的字典的列表。我想尝试使用 tbl_nm 和 seq 对列表进行排序。不知道如何实现它。带有字典的示例列表

[
    {"tbl_nm": "Table 1", "seq": 2, "data": "datapoint"},
    {"tbl_nm": "Table 1", "seq": 1, "data": "datapoint"},
    {"tbl_nm": "Table 1", "seq": 3, "data": "datapoint"},
    {"tbl_nm": "Table 2", "seq": 2, "data": "datapoint"},
    {"tbl_nm": "Table 2", "seq": 1, "data": "datapoint"},
    {"tbl_nm": "Table 3", "seq": 1, "data": "datapoint"},
    {"tbl_nm": "Table 4", "seq": 1, "data": "datapoint"},
    {"tbl_nm": "Table 4", "seq": 2, "data": "datapoint"}
]
Run Code Online (Sandbox Code Playgroud)

预期输出:-

[
    {"tbl_nm": "Table 1", "seq": 1, "data": "datapoint"},
    {"tbl_nm": "Table 1", "seq": 2, "data": "datapoint"},
    {"tbl_nm": …
Run Code Online (Sandbox Code Playgroud)

python sorting python-3.x

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

标签 统计

python ×11

sorting ×7

python-3.x ×3

key ×2

list ×2

tuples ×2

arrays ×1

csv ×1

data-structures ×1

dictionary ×1

iterator ×1

lambda ×1