小编Ash*_*ary的帖子

python reduce来查找集合的联合

我试图找到一组集合的联合.具体来说,我想要networkx调用图表字典中每个键的节点列表的并集periodic_gs.我想使用该reduce函数,因为似乎合理的是将所有periodic_gs[x].nodes() where 的联合作为x一个关键periodic_gs.

这是我的尝试:

reduce(lambda x,y: set(periodic_gs[x].nodes()).union(set(periodic_gs[y].nodes())), periodic_gs.keys(), {})
Run Code Online (Sandbox Code Playgroud)

对我而言,这表示在字典中的每个图形上使用节点的并集.出于某种原因,python告诉我:TypeError: unhashable type: 'dict'我没有看到这个TypeError,因为periodic_gs.keys()是一个键列表(它们是字符串,但我不知道这是多么重要),并且当替换为lambda函数的参数时将起作用.

是什么导致类型错误,我该如何解决?

python dictionary functional-programming set fold

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

TypeError:object .__ new __()不带参数

我一直在研究Python The Hard Way并且我得到了上述错误,并且不知道为什么.我拿出了大部分我认为可能的填充文字.对不起,如果有点长.

from sys import exit
from random import randint

class Game(object):

    def __int__(self, start):
        self.quips = [
             "You died. You kinda suck at this.",
             "Your mom would be proud. If shw were smarter.",
             "Suck a loser.",
             "I have a small puppy that's better at this."
        ]
        self.start = start

    def play(self):
        next_room_name = self.start

        while True:
            print "\n-------"
            room = getattr(self, next_room_name)
            next_room_name = room()

    def death(self):
            print self.quips[randint(0, len(self.quips)-1)]
            exit(1)

    def central_corridor(self):
        print "The Gothons of …
Run Code Online (Sandbox Code Playgroud)

python

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

Python 3中的string.lower

我有一个工作的python脚本,但在python 3中必须改变一些东西.

例如,如果我想将参数1转换为小写:

import string
print(string.lower(sys.argv[1]))
Run Code Online (Sandbox Code Playgroud)

它说'module' object has no attribute 'lower'- 好吧,我明白,string现在是一个模块.

如果我删除导入,只写string.lower('FOO'),它会抱怨name 'string' is not defined.

那么将字符串转换为小写的正确方法是什么?

python string python-3.x

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

input():"NameError:name'n'未定义"

好的,所以我在python中编写成绩检查代码,我的代码是:

unit3Done = str(input("Have you done your Unit 3 Controlled Assessment? (Type y or n): ")).lower()
if unit3Done == "y":
    pass
elif unit3Done == "n":
    print "Sorry. You must have done at least one unit to calculate what you need for an A*"
else:
    print "Sorry. That's not a valid answer."
Run Code Online (Sandbox Code Playgroud)

当我通过我的python编译器运行它并且我选择时"n",我得到一个错误说:

"NameError:名称'n'未定义"

当我选择"y"我再NameError'y'是问题,但是当我做别的事情,代码运行正常.

任何帮助是极大的赞赏,

谢谢.

python terminal nameerror

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

计数以字符串形式运行

我有一个看起来像这样的字符串:

string = 'TTHHTHHTHHHHTTHHHTTT'
Run Code Online (Sandbox Code Playgroud)

如何计算字符串中的运行次数,以便我得到,

5次运行T和4次运行H.

python string

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

为什么`mylist [:] = reverse(mylist)`工作?

以下反转列表"就地"并在Python 2和3中工作:

>>> mylist = [1, 2, 3, 4, 5]
>>> mylist[:] = reversed(mylist)
>>> mylist
[5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

为什么/怎么样?既然reversed给了我一个迭代器,并且不预先复制列表,并且因为[:]=替换"就地",我很惊讶.以下,也使用reversed,按预期中断:

>>> mylist = [1, 2, 3, 4, 5]
>>> for i, item in enumerate(reversed(mylist)):
        mylist[i] = item
>>> mylist
[5, 4, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

为什么不是这样的[:] =失败?

是的,我知道mylist.reverse().

python reverse list python-internals assign

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

创建中间挂单的问题

我创建了一个自定义支付模块,目前它validateOrder()在从支付网站重定向后调用,此方法创建订单,发送电子邮件等.但问题是,如果用户关闭支付网站,然后它可以重定向回PrestaShop网站在这种情况下不会创建订单.因此,我想"pending"在重定向到付款网站之前创建一个订单(比如说有状态),并且在从付款网站重定向后,我可以简单地标记相同的付款并发送邮件等.

目前为此我试图调用validateOrder两次,一次进入hookdisplayPayment(这里我将状态设置为"pending"),一次调用后重定向.但现在重定向后,我得到"购物车无法装载,或者已经使用此购物车下订单".我认为这是因为我不能使用相同的卡ID更新同一个订单两次.

请注意,付款成功后,我只想发送一次电子邮件.目前,我使用自定义付款状态'send_email'设置为0.

这有什么好的解决方法?

如果重要的话,我想支持1.5+和1.6+版本.

php prestashop prestashop-1.5 prestashop-1.6

11
推荐指数
2
解决办法
1707
查看次数

在python中创建所需长度的高斯滤波器

任何人都可以建议哪个库支持创建所需长度和sigma的高斯滤波器?我基本上需要一个等效函数用于下面的matlab函数:

fltr = fspecial('gaussian',[1 n],sd)
Run Code Online (Sandbox Code Playgroud)

python scipy

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

从python中的命令行参数获取文件路径

如果我们从命令行参数和提取文件传递文件,任何人都可以指导我如何获取文件路径.如果我们还需要检查文件是否存在于特定目录中

python.py /home/abhishek/test.txt
Run Code Online (Sandbox Code Playgroud)

获取文件路径并检查test.txt是否存在于abhishek文件夹中.

我知道这可能很容易,但我对pytho有点新意

python

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

如何在Python中将嵌套列表转换为一维列表?

我尝试了一切(据我所知)分裂数组并将它们连接在一起甚至使用itertools:

import itertools

def oneDArray(x):
    return list(itertools.chain(*x))
Run Code Online (Sandbox Code Playgroud)

我想要的结果:

一个) print oneDArray([1,[2,2,2],4]) == [1,2,2,2,4]

奇怪的是,它适用于

b) print oneDArray([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) == [1, 2, 3, 4, 5, 6, 7, 8, 9]

问题1)我如何以我想要的方式获得工作(任何提示?)

问题2)为什么以上代码适用于b部分而不是a部分?

python nested-lists python-2.7

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