zoukankan      html  css  js  c++  java
  • Python(2.7)-字典(dict)

    2.4字典(dict)

    字典基础d={key1:value1,key2:value2}

    字典跟列表一样,是一种可变容器模型,可以存储任意类型的对象。值(value)可以取任何数据类型,但键(key)必须是不可变的,如字符串,数字或元组,使用可变类型,比如列表等,会报错。

    字典的每个键值(key:value)之间用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中;字典中的key/value对是没有顺序的,因此他不属于序列,如果你需要一个特定顺序,需要在使用之前对其排序,从字典中查找数据(哈希)比序列要快

    2.4.1新增(dict[key]=value)

      dict[key]=value:往字典dict中新增一个key/value

    >>> dict={}

    >>> dict["name"]="pangwei"

    >>> dict["age"]=25

    >>> dict["sex"]="m"

    >>> dict

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> 

    2.4.2修改(dict[key]=value)

      dict[key]=value:往字典中修改内容的方法就是新增键值对,通过key值修改value值,无法通过value值修改key值。

    >>> dict

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> dict["age"]=26

    >>> dict

    {'age': 26, 'name': 'pangwei', 'sex': 'm'}

    >>> 

    2.4.3删除(del dict[key];del dict;dict.pop(key);dict.popitem();dict.clear())

           del dict[key]:删除dict中键为key的键值对

    >>> dict

    {'age': 26, 'name': 'pangwei', 'sex': 'm'}

    >>> del dict["sex"]

    >>> dict

    {'age': 26, 'name': 'pangwei'}

    >>> 

      del dict:删除整个字典

    >>> dict1={'age': '25', 'name': 'pangwei', 'sex': 'm'}

    >>> del dict1

    >>> dict1

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

    NameError: name 'dict1' is not defined

    >>> 

      dict.pop(key):取出字典中键为keyvalue值并删除该键值对

    >>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}

    >>> dict.pop("age")

    '25'

    >>> dict

    {'name': 'pangwei', 'sex': 'm'}

    >>> 

      dict.popitem():随机取出并删除dict中的一个键值对

    >>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}

    >>> dict.popitem()

    ('age', '25')

    >>> dict

    {'name': 'pangwei', 'sex': 'm'}

    >>> 

      dict.clear():清空指定字典

    >>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}

    >>> dict.clear()

    >>> dict

    {}

    >>> 

    2.4.4字典访问

     

      dict [key]:返回键为指定内容的value

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> a["sex"]

    'm'

    >>> 

      dict.keys();dict.values();dict.items():用列表输出dict中所有的key;用列表输出dict中所有的value;用列表输出dict中所有的key/value对,每一对存于一个元组中

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}    

    >>> a.keys()

    ['age', 'name', 'sex']

    >>> a.values()

    [25, 'pangwei', 'm']

    >>> a.items()

    [('age', 25), ('name', 'pangwei'), ('sex', 'm')]

    >>> 

      for k in dict.keys():查询字典dict中所有key

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> for k in a.keys():

    ...     print k

    ...

    age

    name

    sex

    >>> 

     

      for v in dict.values():查询字典dict中所有value

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> for v in a.values():

    ...     print v

    ...

    25

    pangwei

    m

    >>> 

     

      for k, v in dict.items():查询字典dict中所有keyvalue

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> for k,v in a.items():

    ...     print k,v

    ...

    age 25

    name pangwei

    sex m

    >>> 

    2.4.5字典内置函数(cmp(dict1,dict2);len(dict))

      cmp(dict1,dict2):比较两个字典元素

    >>> a={'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> b={'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> cmp(a,b)

    0

    >>> c={'bge': 90, 'same': 'pangwei'}

    >>> cmp(a,c)

    1

    >>> d={1:11,2:22,3:33,4:44}

    >>> cmp(a,d)

    -1

    >>> 

      len(dict):返回字典元素个数

    >>> a={'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> len(a)

    3

    >>> 

    2.4.6字典内置方法

      dict.copy():返回一个字典的浅拷贝  注意:拷贝只是将字典复制到了另一个内存地址,是一个独立的存在,跟原字典不存在联系

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> a.copy()

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> id(a)

    40973992L

    >>> id(a.copy())

    40974536L

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> b=a.copy()

    >>> b

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> a["age"]=26

    >>> a

    {'age': 26, 'name': 'pangwei', 'sex': 'm'}

    >>> b

    {'age': 25, 'name': 'pangwei', 'sex': 'm'} 

    >>> a["cost"]=100

    >>> a

    {'age': 26, 'cost': 100, 'name': 'pangwei', 'sex': 'm'}

    >>> b

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>>

      dict.fromkeys(seq,value=None):创建一个新的字典,以序列seq中的元素作为字典的key值,以value作为所有key值对应的初始value值,value为非必传参数,如果不传则默认为None

    >>> dict.fromkeys("abcd",0)

    {'a': 0, 'c': 0, 'b': 0, 'd': 0}

    >>> dict.fromkeys("abcd")

    {'a': None, 'c': None, 'b': None, 'd': None}

    >>> 

      dict.get(key,default=None):返回指定键的value值,如果键不在字典中,返回default值

    >>> a

    {'cost': 100, 'name': 'pangwei', 'sex': 'm'}

    >>> a.get("age")

    >>> a.get("cost")

    100

    >>> a.get("age","error")

    'error'

    >>> 

       dict.setdefault(key,default=None):返回指定键的value值,如果键不在字典中,将会添加键并将值设为default

    >>> a

    {'cost': 100, 'name': 'pangwei', 'sex': 'm'}

    >>> a.setdefault("cost",10)

    100

    >>> a.setdefault("age",25)

    25

    >>> a

    {'age': 25, 'cost': 100, 'name': 'pangwei', 'sex': 'm'}

    >>> 

      dict.has_key(key):判断键是否在字典里面,如果键在字典dict里返回True,否则返回False

    >>> a

    {'cost': 100, 'name': 'pangwei', 'sex': 'm'}

    >>> a.has_key("age")

    False

    >>> a.has_key("cost")

    True

    >>> 

         dict.update(dict2):把字典dict2的键/值对更新到dict,注意:如果dictdict2中有相同的key值,则对应的value值也会被更新

    >>> a

    {'age': 25, 'name': 'pangwei', 'sex': 'm'}

    >>> d

    {2: 22, 3: 33, 'age': 27}

    >>> a.update(d)

    >>> a

    {2: 22, 3: 33, 'name': 'pangwei', 'age': 27, 'sex': 'm'} #字典a中”age”更新了

    >>> 

  • 相关阅读:
    LeetCode "Palindrome Partition II"
    LeetCode "Longest Substring Without Repeating Characters"
    LeetCode "Wildcard Matching"
    LeetCode "Best Time to Buy and Sell Stock II"
    LeetCodeEPI "Best Time to Buy and Sell Stock"
    LeetCode "Substring with Concatenation of All Words"
    LeetCode "Word Break II"
    LeetCode "Word Break"
    Some thoughts..
    LeetCode "Longest Valid Parentheses"
  • 原文地址:https://www.cnblogs.com/pw20180101/p/8193518.html
Copyright © 2011-2022 走看看