zoukankan      html  css  js  c++  java
  • 《Python核心编程》第二版第186页第七章练习 续一

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

  • 相关阅读:
    LeetCode OJ-- Interleaving String **@
    二叉树遍历 Morris
    LeetCode OJ--Binary Tree Zigzag Level Order Traversal *
    LeetCode OJ-- Letter Combinations of a Phone Number ***
    【转】 堆和栈的区别
    LeetCode OJ-- Valid Sudoku
    LeetCode OJ--Word Break II ***@
    LeetCode OJ-- Surrounded Regions **@
    add host bat
    SP2013 SP1(kb28805502)补丁安装测试初体验
  • 原文地址:https://www.cnblogs.com/balian/p/2078182.html
Copyright © 2011-2022 走看看