7-3.
字典和列表的方法。
(a)创建一个字典,并把这个字典中的键按照字母顺序显示出来。
(b)现在根据已经按照字母顺序排列好的键,显示出这个字典中的键和值。
(c)同(b),但这次是根据已按照字母顺序排序好的字典的值,显示出这个字典中的键和值(注意:对字典和哈希表来说,这样做一般没什么实际意义,因为大多数访问和排序(如果需要)都是基于字典的键,这里只把它作为一个练习)。
【答案】
(a)代码如下:
>>> my_dict = {'a': 4, 'b': 3, 'c': 2, 'd': 1}
>>> my_dict
{'a': 4, 'c': 2, 'b': 3, 'd': 1}
>>> my_dict.values()
[4, 2, 3, 1]
>>> my_dict.keys()
['a', 'c', 'b', 'd']
>>> sorted(my_dict.keys())
['a', 'b', 'c', 'd']
>>>
(b)代码如下:
>>> for i in sorted(my_dict.keys()):
...     print 'key = %s, value = %d' % (i, my_dict[i])
...
key = a, value = 4
key = b, value = 3
key = c, value = 2
key = d, value = 1
>>>
(c)代码如下:
>>> dic = {'a_key':5, 'b_key':4, 'c_key':3, 'd_key':2, 'e_key':1}
>>> k = sorted(dic.iteritems(), key = lambda asd:asd[1], reverse = False)
>>> for i in range(len(k)): print k[i][0], k[i][1]
...
e_key 1
d_key 2
c_key 3
b_key 4
a_key 5
>>>

【参考】
关于函数lambda

>>> dic = {'a_key':5, 'b_key':4, 'c_key':3, 'd_key':2, 'e_key':1}
>>> dic
{'e_key': 1, 'b_key': 4, 'a_key': 5, 'd_key': 2, 'c_key': 3}

>>> print dic.iteritems()
<dictionary-itemiterator object at 0x00A75A50>
>>> print type(dic.iteritems())
<type 'dictionary-itemiterator'>

>>> for i in dic.iteritems():
...     print i
...
('e_key', 1)
('b_key', 4)
('a_key', 5)
('d_key', 2)
('c_key', 3)

>>> for i in dic.iteritems():
...     print i[0], i[1], i
...
e_key 1 ('e_key', 1)
b_key 4 ('b_key', 4)
a_key 5 ('a_key', 5)
d_key 2 ('d_key', 2)
c_key 3 ('c_key', 3)


>>> print sorted(dic.iteritems())
[('a_key', 5), ('b_key', 4), ('c_key', 3), ('d_key', 2), ('e_key', 1)]

>>> f=lambda x:x+1
>>> f(2)
3
# lambda是什么函数?x是参数,x+1是函数返回值。
                             

>>> print sorted(dic.iteritems(), key = lambda asd:asd[0])
[('a_key', 5), ('b_key', 4), ('c_key', 3), ('d_key', 2), ('e_key', 1)]

>>> print sorted(dic.iteritems(), key = lambda asd:asd[1])
[('e_key', 1), ('d_key', 2), ('c_key', 3), ('b_key', 4), ('a_key', 5)]

>>> print sorted(dic.iteritems(), key = lambda asd:asd[1], reverse = True)
[('a_key', 5), ('b_key', 4), ('c_key', 3), ('d_key', 2), ('e_key', 1)]

>>> print sorted(dic.iteritems(), key = lambda asd:asd[1], reverse = False)
[('e_key', 1), ('d_key', 2), ('c_key', 3), ('b_key', 4), ('a_key', 5)]

python字典排序
http://hi.baidu.com/when_love/blog/item/b66b510143821709728da563.html

python 列表list排序sort
http://wupinyin.appspot.com/article_detail?id=agh3dXBpbnlpbnIOCxIHQXJ0aWNsZRjyLgw


7-4.
建立字典。给定两个长度相同的列表,比如说,列表[1,2,3,...]和['abc', 'def', 'ghi', ...],用这两个列表里的所有数据组成一个字典。像这样:{1:'abc', 2:'def', 3:'ghi', ...}。
【答案】
代码如下:
>>> list_a = [1, 2, 3, 4]
>>> list_b = ['a_value', 'b_value', 'c_value', 'd_value']

>>> zip(list_a, list_b)
[(1, 'a_value'), (2, 'b_value'), (3, 'c_value'), (4, 'd_value')]

>>> c = {}

>>> k = zip(list_a, list_b)
>>> k
[(1, 'a_value'), (2, 'b_value'), (3, 'c_value'), (4, 'd_value')]

>>> for i in range(len(k)):
...     c.update({k[i][0]:k[i][1]})
...

>>> c
{1: 'a_value', 2: 'b_value', 3: 'c_value', 4: 'd_value'}

posted on 2011-06-11 10:38  balian  阅读(991)  评论(7编辑  收藏  举报