Python dic/set/迭代

字典的定义

dic = {"name":"zhangsan","age":7,"val":{"math":60,"eng":80}}

值的输出

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
for value in dict.itervalues():
     print value
#

那这两个方法values itervalues 有何不同之处呢?


1. values() 方法实际上把一个 dict 转换成了包含 value 的list。


2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。


3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心


print "both"
for key,val in dic.items():
    print key,val
for key,value in dict.iteritems():
     print key,value
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([])

打印出两个数组相同和不同的元素
list1 = [1,5,7,8,9]
list2 = [1,5,6,7,8]
print set(list1) & set(list2)
print set(list1) ^ set(list2)

 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

 

posted on 2019-08-03 13:29  思此狂  阅读(293)  评论(0编辑  收藏  举报

导航