纯粹是出于好奇的缘故。 这显然是无效的语法: foo = {} foo['bar': 'baz'] 很明显,发生了什么事情,开发人员从字典定义中移出了一行,但没有将其从字典字典声明更改为赋值语法(因此已被适当地模拟)。 但是我的问题是,为什么Python在这里引发TypeError: unhashable type而不是SyntaxError ? 它试图散列什么types? 只是这样做: 'bar': 'baz' 是一个SyntaxError,如下所示: ['bar': 'baz'] 所以我不能看到什么types是不可能被创build的。
这很简单,但我喜欢这样做的一个漂亮,pythonic的方式。 基本上,给定一个字典,返回只包含那些以某个string开头的键的子字典。 » d = {'Apple': 1, 'Banana': 9, 'Carrot': 6, 'Baboon': 3, 'Duck': 8, 'Baby': 2} » print slice(d, 'Ba') {'Banana': 9, 'Baby': 2, 'Baboon': 3} 这对于一个函数来说相当简单: def slice(sourcedict, string): newdict = {} for key in sourcedict.keys(): if key.startswith(string): newdict[key] = sourcedict[key] return newdict 但肯定有更好,更聪明,更可读的解决scheme? 发电机可以帮助吗? (我从来没有足够的机会使用这些)。
我试图给窗口添加一个自定义标题,但是我遇到了麻烦。 我知道我的代码是不正确的,但是当我运行它,它创build2个窗口,而只有标题tk和另一个更大的窗口与“简单程序”。 我怎样才能让tk窗口的标题是“Simple Prog”,而不是有一个新的附加窗口。 我不认为我想有Tk()的一部分,因为当我有我的完整的代码中,有一个错误 from tkinter import Tk, Button, Frame, Entry, END class ABC(Frame): def __init__(self,parent=None): Frame.__init__(self,parent) self.parent = parent self.pack() ABC.make_widgets(self) def make_widgets(self): self.root = Tk() self.root.title("Simple Prog")
请考虑两个代码片段(注意string和整数之间的区别): a = [] a[:] = '1' 和 a = [] a[:] = 1 在第一种情况下, a是['1'] 。 在第二个,我得到错误TypeError: can only assign an iterable 。 为什么在这里使用'1'会有根本的不同?
我有一个CSV文件, "value.txt"与以下内容:该文件的前几行是: Date,"price","factor_1","factor_2" 2012-06-11,1600.20,1.255,1.548 2012-06-12,1610.02,1.258,1.554 2012-06-13,1618.07,1.249,1.552 2012-06-14,1624.40,1.253,1.556 2012-06-15,1626.15,1.258,1.552 2012-06-16,1626.15,1.263,1.558 2012-06-17,1626.15,1.264,1.572 在R中我们可以在使用中读取这个文件 price <- read.csv("value.txt") 这将返回一个data.frame我可以用于统计操作: > price <- read.csv("value.txt") > price Date price factor_1 factor_2 1 2012-06-11 1600.20 1.255 1.548 2 2012-06-12 1610.02 1.258 1.554 3 2012-06-13 1618.07 1.249 1.552 4 2012-06-14 1624.40 1.253 1.556 5 2012-06-15 1626.15 1.258 1.552 6 2012-06-16 1626.15 1.263 1.558 […]
当我把它粘贴到浏览器上时,下面的工作是正确的 http://www.somesite.com/details.pl?urn=2344 但是,当我尝试用Python读取URL时,什么也没有发生: link = 'http://www.somesite.com/details.pl?urn=2344' f = urllib.urlopen(link) myfile = f.readline() print myfile 我是否需要对url进行编码,或者有什么我没有看到?
我可以简单地++一个字符? 什么是这样做的有效方法? 我想通过urlwww.website.com/term/#,www.website.com/term/a,www.website.com/term/b,www.website.com/term/c,www .website.com / term / d … www.website.com/term/z格式
我正在尝试在Python 2.7中使用pip来安装BeautifulSoup。 我不断收到错误消息,并不明白为什么。 我按照说明安装了pip,安装到以下目录: c:\Python27\Scripts\pip.exe ,然后我尝试将它添加到path中,然后运行pip install package命令。 尝试了两种不同的方式: import sys sys.path.append('C:\\Python27\\Scripts\\pip.exe') pip install beautifulsoup4 import sys sys.path.append('C:\\Python27\\Scripts') pip install beautifulsoup4 都给我这个错误信息: >>> pip install beautifulsoup4 SyntaxError: invalid syntax shell突出显示“install”一词,并说这是无效的语法。 我不知道发生了什么,所以任何帮助将不胜感激。
我目前是新来的python卡住了这个问题,似乎无法find正确的答案。 问题:给出单词列表,按照长度(从最长到最短)的顺序返回一个相同单词的列表,第二个sorting标准应该是按字母顺序的。 提示:你需要考虑两个function。 这是我迄今为止: def bylength(word1,word2): return len(word2)-len(word1) def sortlist(a): a.sort(cmp=bylength) return a 它按长度sorting,但我不知道如何将第二个标准应用于这种按字母顺序递减的sorting。
我可以简单地通过连接到MongoDB服务器创build一个新的数据库,还是有另一种方法来使用Python创build它? 如果是的话,这是怎么做的?