python 字典常见方法

来源:互联网 发布:淘宝店麻辣小黑粉 编辑:程序博客网 时间:2024/06/06 04:42
1》pop()方法
>>> help(dict.pop)
Help on method_descriptor:
pop(...)
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised

>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.pop('age')
25
>>> d
{'salary': 8976, 'name': 'song', 'sex': 'man'}
>>> d.pop('height','Not find!')
'Not find!'
>>> d.pop('name','Not find!')
'song'
>>> d
{'salary': 8976, 'sex': 'man'}
>>> d.pop('height')

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    d.pop('height')
KeyError: 'height'

2》popitem()方法
Help on method_descriptor:
popitem(...)
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.

>>> d={'salary': 8976, 'sex': 'man'}
>>> d
{'salary': 8976, 'sex': 'man'}
>>> d.popitem()
('salary', 8976)
>>> d
{'sex': 'man'}
>>> d.popitem()
('sex', 'man')
>>> d
{}
>>> d.popitem()
Traceback (most recent call last):
  File "<pyshell#38>", line 1, in <module>
    d.popitem()
KeyError: 'popitem(): dictionary is empty'

3》遍历字典的key
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> for k in d:
print k

salary
age
name
sex
>>> for k in d.keys():
print k

salary
age
name
sex
4》遍历字典的值
>>> for v in d.values():
print v

8976
25
song
man
5》遍历键值对
>>> for k,v in d.items():#效率低(如果字典很大,则转换成列表需要一定的时间)
print k,v

salary 8976
age 25
name song
sex man
>>> for k in d:#效率高(不需要转化成字典,节省了时间)
print k,d[k]

salary 8976
age 25
name song
sex man
6》get()方法
Help on method_descriptor:
get(...)
    D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.get('age')
25
>>> print d.get('height')
None
>>> d.get('age','Not find!')
25
>>> d.get('height','Not find!')
'Not find!'
7》has_key()方法
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.has_key('name')
True
>>> d.has_key('job')
False
8》iteritems()方法
Help on method_descriptor:
iteritems(...)
    D.iteritems() -> an iterator over the (key, value) items of D
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.items()
[('salary', 8976), ('age', 25), ('name', 'song'), ('sex', 'man')]
>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0x02F09390>
>>> it.next()
('salary', 8976)
>>> it.next()
('age', 25)
>>> next(it)
('name', 'song')
>>> next(it)
('sex', 'man')
>>> it.next()
Traceback (most recent call last):
  File "<pyshell#90>", line 1, in <module>
    it.next()
StopIteration
9》iterkeys()方法
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.keys()
['salary', 'age', 'name', 'sex']
>>> it=d.iterkeys()
>>> it
<dictionary-keyiterator object at 0x02ED3450>
>>> it.next()
'salary'
>>> it.next()
'age'
>>> next(it)
'name'
>>> next(it)
'sex'
>>> next(it)
Traceback (most recent call last):
  File "<pyshell#103>", line 1, in <module>
    next(it)
StopIteration
10》itervalues()方法
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.itervalues()
<dictionary-valueiterator object at 0x0304C420>
>>> d.values()
[8976, 25, 'song', 'man']
>>> it=d.itervalues()#由值生成的迭代器
>>> it.next()
8976
>>> it.next()
25
>>> it.next()
'song'
>>> it.next()
'man'
>>> it.next()
Traceback (most recent call last):
  File "<pyshell#209>", line 1, in <module>
    it.next()
StopIteration
11》setdefault()方法
>>> help(dict.setdefault)
Help on method_descriptor:
setdefault(...)
    D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
>>> d
{'salary': 8976, 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.setdefault('job','IT')#添加一个键值对
'IT'
>>> d
{'salary': 8976, 'job': 'IT', 'age': 25, 'name': 'song', 'sex': 'man'}
>>> d.setdefault('job','student')#键'job'对应的值依然是'IT',并没有变

'IT'

>>> d
{'salary': 8976, 'job': 'IT', 'sex': 'man', 'age': 25, 'name': 'song'}

>>> d['job']='student'#修改了键'job'对应的值
>>> d
{'salary': 8976, 'job': 'student', 'age': 25, 'name': 'song', 'sex': 'man'}
>>> 
12》update()方法
>>> d
{'salary': 8976, 'job': 'student'}
>>> d1={'job':'IT','height':180}
>>> d.update(d1)
>>> d
{'salary': 8976, 'job': 'IT', 'height': 180}
>>> d1
{'job': 'IT', 'height': 180}
13》keys()方法
>>> d
{'salary': 8976, 'job': 'IT', 'height': 180}
>>> d.keys()
['salary', 'job', 'height']
14》values()方法
>>> d
{'salary': 8976, 'job': 'IT', 'height': 180}
>>> d.values()
[8976, 'IT', 180]
15》items()方法
>>> d
{'salary': 8976, 'job': 'IT', 'height': 180}
>>> d.items()
[('salary', 8976), ('job', 'IT'), ('height', 180)]
16》clear()方法
>>> d
{'salary': 8976, 'job': 'IT', 'height': 180}
>>> d.clear()
>>> d
{ }
17》cmp()方法
字典的大小比较:
第一优先级是元素个数,元素个数多的字典大。
第二优先级是键的大小,元素个数一样的情况下,按照键的大小比较,键大,字典就大。
第三优先级是值的大小,元素个数一样,键也一样,则按照值的大小比较,值大,字典就大。
第一个大返回1,小返回-1,一样返回0;
>>> d1={'name':'song','sex':'man','score':90}
>>> d2={'height':180}
>>> cmp(d1,d2)#按照第一优先级比较,字典d1的元素个数多,所以字典d1大,返回1
1

>>> d1
{'score': 90, 'name': 'song', 'sex': 'man'}
>>> d2
{'job': 'IT', 'score': 89, 'height': 180}
>>> cmp(d1,d2)#元素个数一样,按照键来比较,因为'score'>'job',所以d1>d2,返回1
1

>>> d1
{'score': 90, 'name': 'song', 'sex': 'man'}
>>> d2
{'score': 90, 'name': 'abc', 'sex': 'woman'}
>>> cmp(d2,d1)#元素个数和键都一样,按照值来比较,因为'abc'<'song',所以d2<d1,返回-1
-1

>>> d1
{'score': 90, 'name': 'song', 'sex': 'man'}
>>> d2
{'score': 90, 'name': 'song', 'sex': 'man'}
>>> cmp(d1,d2)#元素个数,键,值都相等,所以字典d1==d2,返回0
0

(完)
1 0
原创粉丝点击