《Python核心編程》第二版第186頁第七章練習 續一

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.