相关疑难解决方法(0)

functools.wraps有什么作用?

对另一个问题的答案的评论中,有人说他们不确定functools.wraps在做什么.所以,我问这个问题,以便在StackOverflow上有一个记录,供将来参考:究竟functools.wraps做了什么?

python decorator functools

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

映射python字典中的值

鉴于{ k1: v1, k2: v2 ... }我想要{ k1: f(v1), k2: f(v2) ... }提供的字典,我传递了一个函数f.

有没有这样的内置功能?或者我必须这样做

dict([(k, f(v)) for (k, v) in my_dictionary.iteritems()])
Run Code Online (Sandbox Code Playgroud)

理想情况下我会写

my_dictionary.map_values(f)
Run Code Online (Sandbox Code Playgroud)

要么

my_dictionary.mutate_values_with(f)
Run Code Online (Sandbox Code Playgroud)

也就是说,如果原始字典被改变或创建了副本,对我来说无关紧要.

python dictionary map-function

219
推荐指数
4
解决办法
21万
查看次数

在python中将整数列表转换为范围

python中是否存在可以将增加的整数列表转换为范围列表的内容

例如,给定{0,1,2,3,4,7,8,9,11}我想得到{{0,4},{7,9},{11,11}}.

我可以写一个程序来做这个,但想知道python中是否有内置函数

python integer list range

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

在python中按值对defaultdict排序

我有一个数据结构,如下所示:

不同年份的三个城市的人口如下.

Name  1990 2000 2010
A     10   20   30
B     20   30   10
C     30   10   20
Run Code Online (Sandbox Code Playgroud)

我用a defaultdict来存储数据.

from collections import defaultdict
cityPopulation=defaultdict(list)
cityPopulation['A']=[10,20,30]
cityPopulation['B']=[20,30,10]
cityPopulation['C']=[30,10,20]
Run Code Online (Sandbox Code Playgroud)

我想defaultdict根据列表中的特定列(年份)对其进行排序.比如说,1990年的排序,应该给C,B,A,而2010年的排序应该给A,C,B.

此外,这是存储数据的最佳方式吗?当我改变人口价值时,我希望它是可变的.

python sorting dictionary defaultdict

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

在列表推导中处理lambda表达式中的元组

我正在学习python,当我意识到这一点时,我正在摆弄lambda表达式和列表推导:

>>> list(map(lambda x: x*x, [1,2]))

输出>>> 1,4但是

>>> list(map(lambda (x): x*x, [1,2])) 显示指向括号的错误 x

看来lambda表达式的参数列表周围没有括号.(在python 3.x中检查)

我现在想问一下,如果我不能在lambda表达式中的参数周围添加括号,那么我如何使用map和lambda表达式处理元组.例如:

>>> records = [('bob', 35, 'manager'), ('sue', 40, 'developer')]
>>> list(map((lambda (name, age, job): age), records))
Run Code Online (Sandbox Code Playgroud)

此语句显示语法错误,指示name参数前的括号.然后我尝试了一个没有括号的表达式:

>>> list(map((lambda name, age, job: age), records))

但是这个语句也显示一个错误,说lambda表达式需要3个参数,但只提供了1个参数.

我得到map函数从records列表中提取整个记录元组并将其传递给lambda函数,并将lambda function整个元组记录作为参数的 name参数.

我想知道,我如何处理lambda表达式中的元组.另外请告诉我为什么它写在书中(由Mark Lutz学习python)这是有效的吗?是python 2.x. 我是python的新手.提前致谢.

python lambda list-comprehension

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

使用元组作为 lambda 的参数会引发有关缺少所需位置参数的错误

在另一个线程(基于序列中缺失数字的Python拆分列表)中,我找到了这个解决方案:

data = [1,  4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]

for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    print map(itemgetter(1), g)
Run Code Online (Sandbox Code Playgroud)

我是Python新手,尝试将其适应Python 3.4:

for k, g in groupby(enumerate(data), lambda i,x :i-x):
    print('%s' % list(map(itemgetter(1), g)))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

<lambda>() missing 1 required positional argument: 'x'
Run Code Online (Sandbox Code Playgroud)

我(有限)的理解是,groupby 语句中的关键函数仍然链接到需要两个参数的 lambda 函数。是对的吗?更重要的是,有没有办法改编上面的代码?这是一个非常优雅和紧凑的解决方案。

python lambda python-3.x

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