在Python中,如何在一个字典中找到没有另一个字典中对应字符的键?实际问题是,我有一本人员的字典,这些人员已经注册,并且他们每天都会参与一本字典,我正在努力寻找那些已经注册但没有参加的人,或者是在注册词典中,而不是在参与字典中.
在Python食谱中,我找到了交叉口注册和参与的良好代码,或两个词典的交集:
print "Intersection: ", filter(enrollments.has_key, participation.keys())
但我无法弄清楚如何将这种逻辑扩展到正面(?)的情况.我试过把一个不在参数前面.()但是我收到了一个错误.有没有办法将过滤器中的逻辑扩展到我的问题或完全接近它的另一种方法?
我知道我在这里做的事情确实很愚蠢,但是我已经尝试了我能想到的事情。
这是我课程的相关部分:
$ wget http://pjmedia.com/instapundit/
-bash: wget: command not found
$ cd ..
$ pip install wget
Requirement already satisfied (use --upgrade to upgrade): wget in
./anaconda/lib/python2.7/site-packages
$
Run Code Online (Sandbox Code Playgroud)
我已重新启动计算机,但无济于事。我正在使用安装了El Capitan系统的Mac OXX。这与PATH变量有关吗?我在互联网上发现了一些与Windows系统上另一个程序的问题类似的问题,但对于Mac OS却什么也没找到。我尝试从根目录安装它,但系统不允许pip安装它,因为它已经安装。谁能指出我正确的方向?
编辑:我要感谢马克斯,比尔和肯诺布。与过去一周在某些商业网站上获得的免费知识相比,我在10分钟内免费获得的信息更多。有什么方法可以将我的问题标记为已回答,这样人们就不必浪费时间阅读我的问题了吗?
为什么
not re.match("c", "cat")
Run Code Online (Sandbox Code Playgroud)
返回 False,但是
re.match("c", "cat")
Run Code Online (Sandbox Code Playgroud)
不返回 True 而是返回对象在内存中的位置。我找不到让这个语句返回真的方法,但我知道它是真的,因为:
if re.match("c", "cat"):
print "Yes!"
Run Code Online (Sandbox Code Playgroud)
返回“是!”。
正如我所说,这没有实际意义,至少目前没有,但它确实让我感到困惑。
我使用以下代码创建一个文件:
file = open("full_names.txt", "wb")
file.write("Bob Smith\nMichael Jackson\nTony Tiger\nWinston Churchill\nHenry Kissinger\nHamid Karzai\nJohn Major\nJohnny Quest")
file.close()
Run Code Online (Sandbox Code Playgroud)
然后我运行脚本将文件打印到屏幕:
with open("full_names.txt", "rb") as f:
for line in f:
first, last = line.strip().split(" ")
print "Last Name: %r First Name: %r" % (last, first)
Run Code Online (Sandbox Code Playgroud)
但是输出显示了名称周围的引号,如下所示:
Last Name: 'Smith' First Name: 'Bob'
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么或如何摆脱它们?
我正在阅读Steven Lott撰写的《 Functional Python Programming》,这是一本关于“功能性”地使用Python而不是以面向对象的方式使用的书,其中大部分示例着重于探索性数据分析。
洛特说Lamda不能有赋值语句。但是在同一页面上,他为变量分配了一个lambda函数:
>>mersenne = lambda x: 2**x-1
>>mersenne(17)
131071
Run Code Online (Sandbox Code Playgroud)
那怎么不是任务陈述呢?我还缺少其他“分配”的感觉吗?