字典的定义
值的输出
print dic["name"] #zhangsan print dic["val"]["math"] #60
字典的遍历
dic = {"name":"zhangsan","age":7,"val":{"math":60,"eng":80}} print "only key" for key in dic.keys(): print key print "only val" for val in dic.values(): print val
#
那这两个方法values itervalues 有何不同之处呢?
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
3. 打印 itervalues() 发现它返回一个
print "both" for key,val in dic.items(): print key,val
iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
输出的结果:
$ python test.py
only key
age
name
val
only val
7
zhangsan
{'math': 60, 'eng': 80}
both
age 7
name zhangsan
val {'math': 60, 'eng': 80}
$ python test.py
only key
age
name
val
only val
7
zhangsan
{'math': 60, 'eng': 80}
both
age 7
name zhangsan
val {'math': 60, 'eng': 80}
Python 中set
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
s = set(['a','b','c']) print s #输出set(['a', 'c', 'b']) s = set(['a','b','c','a']) print s #输出set(['a', 'c', 'b'])
a = set(['a','b','c']) b = set(['a','b','c','d']) print a & b #交集 输出set(['a', 'c', 'b']) print a | b #并集 输出set(['a', 'c', 'b', 'd']) print b - a #差集 输出set(['d'])
print a - b #差集 输出set([])
set 有 add reomove 的方法
添加元素时,用set的add()方法:
如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:删除set中的元素时,用set的remove()方法: 如果删除的元素不存在set中,remove()会报错:
s = set(['Adam', 'Lisa', 'Paul']) s.add('Adam') print s #输出set(['Lisa', 'Paul', 'Adam']) s.remove('Lisa') print s #输出set(['Paul', 'Adam'])set(['Paul', 'Adam'])
list 的迭代,带有索引,使用python内置函数 enumerate
s = ['Adam', 'Lisa', 'Paul'] for index,val in enumerate(s,start=1): print index,val
输出
1 Adam
2 Lisa
3 Paul