python冲刺(2)

  dist 类型 

Python的 dict 就是专门干这件事的。用 dict 表示“名字”-“成绩”的查找表如下:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
表示形式很像数组,花括号表示这是一个dict,然后按照key:value依次写,最后一个键值对的‘,’可以省略。
dict也是一个集合,所以可以用len()的形式查询集合内.
    

    可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:

    >>> print d['Adam']
    95
    >>> print d['Paul']
    Traceback (most recent call last):
      File "index.py", line 11, in <module>
        print d['Paul']
    KeyError: 'Paul'

    注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。

    要避免 KeyError 发生,有两个办法:

    一是先判断一下 key 是否存在,用 in 操作符:

    if 'Paul' in d:
        print d['Paul']

    如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

        另,dict本身提供一个get方法,在key不存在的时候返回none. : print(d.get(key)) .

    dict的第一个特点是查找速度快,无用论是10个元素还是10万个元素,查找速度都一样。List是伴随数量增加查找时间变长。代价是占用内存。

              第二个特点是存储的k-v键值对,是没有顺序的。不同打印机打印出来的顺序都会不同,这说明dict的内部是无序的,所以不能用dict存有序集合

    第三个特点是key的元素是不可变的。不可变的都可以作为key,像list这样的就不行。

    

    可以直接用d[key]的形式直接给dict赋值,或者重写某个key的value。

 

    set类型

    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。会自动去掉重复的值。

      所以,访问 set中的某个元素实际上就是判断一个元素是否在set中。

         s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
        
        >>> 'Bart' in s
        True
        >>> 'Bill' in s
        False       
说明set中区分大小写。

请用 for 循环遍历如下的set,打印出 name: score 来。

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
 

注意到set的元素是tuple,因此 for 循环的变量被依次赋值为tuple。

参考代码:

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
    print x[0] + ':', x[1]

posted on 2017-12-12 22:03  Simplife_xd  阅读(102)  评论(0编辑  收藏  举报

导航