zoukankan      html  css  js  c++  java
  • Python学习笔记6-字典Dict

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

    >>> person = {"name":"keven","age":15,"gender":"male"}
    >>> person['name']
    'keven'
    >>> type(person)
    <type 'dict'>

    字典可以原地修改,即它是可变的。

    >>> dict1={}
    >>> id(dict1)
    139736380198256
    >>> dict1["name"] = "Keven"
    >>> id(dict1)
    139736380198256
    >>> dict1
    {'name': 'Keven'}

    利用元组在建构字典,方法如下:

    >>> name = (["first","Google"],["second","Yahoo"])
    >>> website = dict(name)
    >>> website
    {'second': 'Yahoo', 'first': 'Google'}

    或者用这样的方法:

    >>> ad = dict(name="keven", age=42)
    >>> ad
    {'age': 42, 'name': 'keven‘

    基本操作

    • len(d),返回字典(d)中的键值对的数量

    >>> city_code = {'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315'}
    >>> len(city_code)
    4


    • d[key],返回字典(d)中的键(key)的值

    >>> city_code["suzhou"]
    '0512'

    • d[key]=value,将值(value)赋给字典(d)中的键(key)

    >>> city_code = {'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315'}
    >>> city_code["shenzhen"]="1212"
    >>> city_code
    {'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315', 'shenzhen': '1212'}

    • del d[key],删除字典(d)的键(key)项(将该键值对删除)

    >>> del city_code["shanghai"]
    >>> city_code
    {'suzhou': '0512', 'beijing': '011', 'tangshan': '0315', 'shenzhen': '1212'}

    • key in d,检查字典(d)中是否含有键为 key 的项

    >>> "shenzhen" in city_code
    True
    >>> "sz" in city_code
    False

    字典也可以实现格式化字符

    >>> city_code = {"suzhou":"0512", "tangshan":"0315", "hangzhou":"0571"}
    >>> " Suzhou is a beautiful city, its area code is %(suzhou)s" % city_code
    ' Suzhou is a beautiful city, its area code is 0512

     字典的常用操作方法:

    copy

    它与赋值的方式不一样,它会在内存中另辟了一个空间,但是需要注意的是:对于不是基础类型的,比如刚才字典的值是列表,Python 不会在被复制的那个对象
    中重新存储,而是用引用的方式,指向原来的值。

    >>> ad = {"name":"qiwsir", "lang":"Python"}
    >>> cd = ad.copy()
    >>> cd
    {'lang': 'Python', 'name': 'qiwsir'}
    >>> id(ad)
    139736371470416
    >>> id(cd)
    139736371472376

    与赋值的差别,id并没有改变

    >>> ed=ad
    >>> ed
    {'lang': 'Python', 'name': 'qiwsir'}
    >>> id(ed)
    139736371470416

    clear

    清空字典中所有元素的操作

    >>> ad = {"name":"qiwsir", "lang":"Python"}
    >>> ad.clear()
    >>> ad
    {}

    get

    dict.get() 就是要得到字典中某个键的值

    >>> ad = {"name":"sir", "lang":"Python"}
    >>> ad.get("name")
    'sir'

    setdefault

    首先,它要执行D.get(k,d) ,就跟前面一样了,然后,进一步执行另外一个操作,如果键k不在字典中,就在字典中增加这个键值对。当然,如果有就没有必要执行这一步了。

    >>> ad = {"name":"sir"}
    >>> ad.setdefault("lang","python")
    'python'
    >>> ad
    {'lang': 'pytghon', 'name': 'sir'}
    >>> ad.setdefault("name","python")
    'sir'
    >>> ad
    {'lang': 'python', 'name': 'sir'}

     items

    D.items() 能够得到一个关于字典的列表,列表中的元素是由字典中的键和值组成的元组

    >>> d={"name":"Keven","age":"20"}
    >>> d.items()
    [('age', '20'), ('name', 'Keven')]

    iteritems

    得到的是一个“迭代器”,这个迭代器是关于“D.items()”的,这种迭代器类型的数据不能直接输出,必须用list() 转换一下,才能看到里面的真面目。

    >>> d={"name":"Keven","age":"20","gender":"femal"}
    >>> d_iter = d.iteritems()
    >>> d_iter
    <dictionary-itemiterator object at 0x7f085c980ba8>
    >>> type(d_iter)
    <type 'dictionary-itemiterator'>
    >>> list(d_iter)
    [('gender', 'femal'), ('age', '20'), ('name', 'Keven')]

    keys和value

    >>> d={"name":"Keven","age":"20","gender":"femal"}
    >>> d.keys()
    ['gender', 'age', 'name']
    >>> d.values()
    ['femal', '20', 'Keven']

    pop

    根据key删除

    >>> d={"name":"Keven","age":"20","gender":"femal"}
    >>> d.pop("name")
    'Keven'
    >>> d
    {'gender': 'femal', 'age': '20'}

    popitem

    D.popitem() 倒是跟list.pop() 有相似之处,不用写参数(list.pop 是可以不写参数),但是, D.popitem() 不是删除最后一个,dict 没有顺序,也就没有最后和最先了,它是随机删除一个,并将所删除的返回。

    >>> d={"name":"Keven","age":"20","gender":"femal"}
    >>> d.popitem()
    ('gender', 'femal')
    >>> d
    {'age': '20', 'name': 'Keven'}

    update

    把一个字典的值加入进来

    >>> d1 = {"lang":"python"}
    >>> d2 = {'age': '20', 'name': 'Keven'}
    >>> d1.update(d2)
    >>> d1
    {'lang': 'python', 'age': '20', 'name': 'Keven'}

    还可以用下面的方法更新:

    >>> d1 = {"lang":"python"}
    >>> d1.update([("name","Keven"),("age","16")])
    >>> d1
    {'lang': 'python', 'age': '16', 'name': 'Keven'}

    has_key

    判断字典中是否有某一个键值

    >>> d={"name":"Keven","age":"20","gender":"femal"}
    >>> d.has_key("name")
    True
    >>> "name" in d
    True
  • 相关阅读:
    [转]MFC与Qt的内存管理
    [转]QT项目生成流程例图
    [转]vc中nmake.exe cl.exe 的使用
    android_layout_linearlayout(二)
    android_layout_relativelayout(一)
    android_layout_linearlayout(一)
    android_layout_relativelayout(二)
    android_activity_研究(一)
    两个线程解决一个线程卡之路
    android_layout_framelayout
  • 原文地址:https://www.cnblogs.com/zydev/p/5840024.html
Copyright © 2011-2022 走看看