小编Ben*_*min的帖子

如何打印字典的密钥?

我想打印一个特定的Python字典键:

mydic = {}
mydic['key_name'] = 'value_name'
Run Code Online (Sandbox Code Playgroud)

现在我可以查看是否mydic.has_key('key_name'),但我想要做的是打印密钥的名称'key_name'.当然我可以使用mydic.items(),但我不希望列出所有键,只是一个特定的键.例如,我期待这样的事情(在伪代码中):

print "the key name is", mydic['key_name'].name_the_key(), "and its value is", mydic['key_name']
Run Code Online (Sandbox Code Playgroud)

有没有name_the_key()方法可以打印密钥名称?


编辑: 好的,非常感谢你们的反应!:)我意识到我的问题没有很好的表达和琐碎.我只是感到困惑,因为我意识到key_name和mydic['key_name']两个不同的东西,我认为打印key_name出字典上下文是不正确的.但实际上我可以简单地使用'key_name'来指代密钥!:)

python dictionary key

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

如何触发价值变化的功能?

我意识到这个问题与事件处理有关,我已经阅读了关于Python事件处理程序的调度程序,所以要么它没有回答我的问题,要么我完全错过了这些信息.

我想要在值发生变化时触发m()对象的方法:Av

例如(假设钱让人开心):

global_wealth = 0

class Person()
    def __init__(self):
        self.wealth = 0
        global global_wealth
        # here is where attribute should be
        # bound to changes in 'global_wealth'
        self.happiness = bind_to(global_wealth, how_happy)

    def how_happy(self, global_wealth):
        return self.wealth / global_wealth
Run Code Online (Sandbox Code Playgroud)

因此,每当global_wealth更改值时,类的所有实例Person都应相应地更改其happiness值.

注意:我必须编辑问题,因为第一个版本似乎暗示我需要getter和setter方法.对困惑感到抱歉.

python event-handling observer-pattern

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

如何从使用OpenID的网站请求页面?

之前已经在这里提出过这个问题.对于提问者和回答者来说,接受的答案可能是显而易见的 - 但不是对我而言.我已就上述问题发表评论以获得更多精确度,但没有回应.我还向meta Q&A索取了关于如何从他们的坟墓中提出问题的帮助,也没有得到答案.

上面问题的答案是:

从客户端的角度来看,OpenID登录与任何其他基于Web的登录非常相似.客户端没有定义的协议; 它是一个普通的Web会话,根据您的OpenID提供程序而有所不同.出于这个原因,我怀疑是否存在任何此类库.您可能需要自己编写代码.

我知道如何使用Urllib2模块登录使用Python的网站.但这还不足以让我猜测如何对OpenID进行身份验证.

我实际上是想以json格式获取我的StackOverflow收件箱,我需要登录.

有人可以提供一个简短的介绍或链接到一个很好的教程如何做到这一点?

python openid authentication urllib2

17
推荐指数
3
解决办法
3619
查看次数

如何使用Python从Web浏览器获取cookie?

上下文:
我正在进行对OpenID使用者的后端访问(实际上是StackExchange).如果我要向用户提供所有可能的OpenID提供程序作为选项,那么在我提交Open ID URL之前,我必须模拟浏览器交互以对每个提供程序进行身份验证.但是,我想我可以通过访问用户网络浏览器的现有cookie,并直接使用URL向消费者请求身份验证来缩短这一空白.

问题:
如何访问用户的网络浏览器的cookie?我已经看到很少有关于如何使用Python的信息.这个上一个问题部分回答了有关Firefox的问题,特别指出她下面的代码示例.但是,我需要从Linux上使用的最常见的Web浏览器访问cookie,而不仅仅是Firefox.

#! /usr/bin/env python
# Protocol implementation for handling gsocmentors.com transactions
# Author: Noah Fontes nfontes AT cynigram DOT com
# License: MIT

def sqlite2cookie(filename):
    from cStringIO import StringIO
    from pysqlite2 import dbapi2 as sqlite

    con = sqlite.connect(filename)

    cur = con.cursor()
    cur.execute("select host, path, isSecure, expiry, name, value from moz_cookies")

    ftstr = ["FALSE","TRUE"]

    s = StringIO()
    s.write("""\
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file!  Do …
Run Code Online (Sandbox Code Playgroud)

python browser openid cookies

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

如何使QTableWidget的列占据最大空间?

我的QTableWidget的列不会填充表格的空间,因此在右侧会留下一个空白区域.如何使我的QTableWidget的列占据最大空间以填充这个空间?

python resize pyqt pyqt4 qtablewidget

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

如何将对象转移到python垃圾回收?

在SO中有几个关于Python垃圾收集的线程,在阅读了大约五个,加上一些文档在线后,我仍然不确定垃圾收集如何工作以及我应该如何管理我不使用的对象.事实上,我读过的某个地方不应该做任何关于收集垃圾的事情,其他人告诉一个应该是del对象,而其他人再次解释解除引用一个对象就足以让Python将其收集为垃圾.

因此,冒着创建副本的风险,我会再次提出问题,但不同的是,希望获得更全面,更清晰的信息.

在我的情况下,我想用表示人物的对象进行小模拟.Person()将创建该类的几个实例.它应该存在一段时间,直到它实际上"死",而其他实例将被创建.

现在我如何使这个Person()实例"死"(假设将创建许多这些实例,我不希望这些实例像鬼一样挂出)?

有几种方法可以引用一个对象:

john = Person('john')
Run Code Online (Sandbox Code Playgroud)

要么

people = []
people.append(Person('john'))
Run Code Online (Sandbox Code Playgroud)

要么

people = {}
people['john'] = Person('john')
Run Code Online (Sandbox Code Playgroud)

保持程序清洁,最佳地释放资源的最佳方法是什么?那么引用我的对象以便控制删除对象的最佳方法是什么?

python garbage-collection reference

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

QWidget.setContentsMargins()似乎无效:为什么会这样?

情况:
我正在研究以这种方式构建的Qt4应用程序(如果父小部件在此问题中很重要):

QApplication
   |_ QMainwindow
         |_ QScrollArea (central widget)
               |_ QFrame (child of scroll area)
                     |_ QFrame
                     |      |_ QLabel
                     |            |_ QPixmap
                     |_ QFrame
                     |      |_ QLabel
                     |            |_ QPixmap
                     |_ QFrame
                           |_ ect...
Run Code Online (Sandbox Code Playgroud)

目标:
我希望子QFrame和它们的QLabel之间没有边距,QLabel和它们的QPixmap之间也没有边距.

方法:
我已经请求使用QFrame.setContentsMargins(0,0,0,0)及其布局的QBoxLayout.setSpacing(0)来减少子QFrame的边距.QLabel与其QPixmap之间的零利差似乎自然而然地发生.

问题:
尽管如此,QFrames中的边距仍然存在:我可以通过将样式表应用于各种小部件来测试这种情况.

我能做什么?

qt4 pyqt4

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

如何将字符串转换为变量名?

我想知道如何将字符串输入转换为变量名称以用于Python代码.一个具体的例子:

def insrospect(foo, bar):
    requested_module = makestringvariable(foo)
    requested_object = makestringvariable(bar)
    import requested_module
    for item in inspect.getmemebers(requested_module.requested_object):
        member = makestringvariable(item[0])
        if callable(requested_object.member):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)
Run Code Online (Sandbox Code Playgroud)

所以在上面,因为我不知道在启动之前要内省哪个模块,我需要将字符串转换为可用的模块名称,并且因为getmembers()将成员作为字符串返回,我还需要将它们转换为可用的变量名来检查它们是否可用是可以赎回的.

有这样的makestringvariable()功能吗?

python string variables module introspection

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

使用GTK + 2或GTK + 3学习GUI编程?

我是GUI编程的新手,我还没有发现什么库最适合我的目的(我想制作桌面环境应用程序,例如码头,面板,桌面等)我已经开始学习GTK的基础知识,主要是使用PyGTK的.我在网上找到的大多数教程都是针对GTK + 2.0的.最近,GTK + 3已经发布.所以我有点不确定这对我的学习曲线意味着什么:

  • 我应该学习使用GTK + 3而忘记GTK + 2吗?
  • 从编码的角度来看,使用其中一个确实有所作为吗?
  • GTG + 3的PyGTK绑定是否已经存在?
  • 有没有可用的GTK + 3教程?

由于我是新手,我会盲目地投入其中,但是一些指导可能更明智.所以如果你有,欢迎你:)

user-interface pygtk gtk2 gtk3

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

有哪些可用的Python模块可以保存和加载数据?

StackOverflow上有许多分散的帖子,关于用于保存和加载数据的Python模块.

我自己熟悉jsonpickle,我也听说过pytables.那里可能还有更多.此外,每个模块似乎都符合某种目的,并且有自己的限制(例如,如果工作的话,加载一个带有泡菜的大型列表或字典需要很长时间).因此,对可能性进行适当的概述会很好.

然后,您可以帮助提供用于保存和加载数据的全面模块列表,描述每个模块:

  • 这个模块的一般用途是什么,
  • 它的极限,
  • 你为什么选择这个模块呢?

python data-storage python-module data-persistence

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