概述
1.工厂方法dict()创建字典,fromkeys()来创建一个默认的字典,字典元素中具有相同的值(如果没有给出值,默认None)。
2.字典中的键必须是可哈希的,所以数字和字符串可以作为字典中的键,但是列表和其他字典不行。
>>> dict2={}
>>> dict2['name']='venus'
>>> dict2['port']=6969
>>> dict2['arch']='sunos5'
>>> print 'host %(name)s is running on port %(port)d' % dict2
host venus is running on port 6969
4.内建hash()可以判断某个对象是否可以做一个字典的键。将一个对象作为参数传递给hash(),会返回这个的哈希值。只有这个对象是可哈希的,才可以作为字典的键(函数的返回值是整数,不产生错误或异常)。如果用比较操作符来比较两个数值,发现它们是相等的,那么即使二者的数据类型不同,它们也会得到相同的哈希值。如果非哈希类型作为参数传递给hash()方法,会产生TypeError错误。
5.
所有不可变的类型都是可哈希的,因此它们都可以做为字典的键。值相等的数字表示相同的键。同时,也有一些可变对象(很少)是可哈希的。一个实现了__hash__()特殊方法的类。因为__hash__()方法返回一个整数。元组做有效的键,必须要加以限制:元组中只包括数字和字符串这样的不可变参数,才可以作为字典中有效的键。
6.
db={};
def newuser():
prompt = 'login desired:';
while True:
name = raw_input(prompt);
if db.has_key(name):
prompt = 'name taken, try another: ';
continue;
else:
break;
pwd = raw_input('passwd: ');
db[name] = pwd;
def olduser():
name = raw_input('login:');
pwd = raw_input('passwd:');
passwd = db.get(name);
if passwd == pwd:
print 'welcome back', name;
else:
print 'login incorrect';
def showmenu():
prompt = """
(N)ew User Login
(E)xisting User Login
(Q)uit
Enter choice: """;
done = False;
while not done:
chosen = False;
while not chosen:
try:
choice = raw_input(prompt).strip()[0].lower();
except (EOFError, KeyboardInterrupt):
choice = 'q';
print 'nYou picked: [%s]' % choice;
if choice not in 'neq':
print 'invalid option, try again';
else:
chosen = True;
done = True;
newuser();
olduser();
if __name__ == '__main__':
showmenu();
提示信息被包括在三引号里,这样做是因为提示信息跨多行,而且比单行包含'n'符号的字符串更容易处理。
如果这个脚本被直接执行(不是通过import方式),会调用showmenu()函数运行程序。
7.集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合(set)有两种不同的类型,可变集合(set)和不可变集合(fronzenset)。对可变集合(set),可以添加和删除元素,对于不可变集合(frozenset)则不允许这样做。可变集合(set)不是可哈希的,因此既不能用作字典的键也不能做其他集合中的元素。不可变集合(frozenset)有哈希值,能被用做字典的键或是作为集合中的一个成员。
8.
>>> s,t
(set(['c', 'e', 'h', 'o', 's']), frozenset(['b', 'h', 'k', 'o', 'p', 's']))
>>> s == t
False
>>> s != t
True
>>> u = frozenset(s)
>>> s == u
True
"小于"符号(<,<=)用来判断子集,"大于"符号(>,>=)用来判断超集。
9.
很多内建方法几乎和操作符等价。但它们之间有一个重要的区别:当用操作符时,操作符两边的操作数必须是集合。在使用内建方法时,对象也可以是迭代类型的。
最后
以上就是唠叨香水为你收集整理的Python核心编程 第七章的全部内容,希望文章能够帮你解决Python核心编程 第七章所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复