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'}