sol229 发表于 2018-8-14 13:10:34

Python学习:字典(dictionary)

  dictionary是python内置数据结构中最灵活的。列表list是有序的对象集合,而dictionary是无序的集合。最主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
  可变长,异构,任意嵌套。字典可以在原处修改,但不支持用于字符串和列表中的序列操作。因为字典是无序的集合,所以根据固定顺序进行操作是行不通的。
  1、dictionary的构造:
D={}      #空字典  
D = {'spam':2, 'ham':1, 'eggs':3}    #三项目字典
  
D = {'food':{'spam':2, 'ham':1, 'eggs':3}    #嵌套
  
D = dict.fromkeys(['a','b'])      #其他构造技术{'a': None, 'b': None}
  
D = dict(name='Bob', age=42)      #{'age': 20, 'name': 'Bob'}
  除以上几种构造方法外,还有一种key和value对应技术:
>>>keyslist=['spam', 'ham', 'eggs']  
>>>valslist=
  
>>>D=dict(zip(keyslist, valslist))
  
{'eggs': 3, 'ham': 1, 'spam': 2}
  和list不同,dictionary以key进行索引运算:
>>>D['eggs']  
>>>D['food']['ham']
  
>>>'eggs' in D
  以下三种常见操作返回的都是list对象:
>>>D.keys()      #['eggs', 'ham', 'spam']  
>>>D.values()      #
  
>>>D.items()       #[('eggs', 3), ('ham', 1), ('spam', 2)]
  值得注意的是以上都是python2.7中的语法,Python3.0中,必须将其放到list调用中,python3.0中的keys()返回一个迭代器:
>>>list(D.keys())  
>>>list(D.values())
  
>>>list(D.items())
  合并操作如下:
>>>D={'eggs': 3, 'ham': 1, 'spam': 2}  
>>>D2={'turkey': 6, 'ham': 2}
  
>>>D.update(D2)    #合并
  
>>>print(D)
  
{'turkey': 6, 'eggs': 3, 'ham': 2, 'spam': 2}
  从上面操作可以看出,合并过程中相同key的项会合并,若key相同但value不同,会更新。
  删除操作有两种方法。pop()删除这个键对应的值。若删除不存在的键,会报错:
>>>D.pop('eggs')  
3
  
>>>del D['eggs']
  其他字典方法:
  读取不存在的键往往会出错,用get方法可以避免出错,仅返回None
>>>D.get('spam')      #A key that is there  
2
  
>>>print(D.get('toast'))      #A key that is missing
  
None
  
>>>D.get('toast', 88)         #if a key is missing, 88 is default
  
88
  字典的大小比较在Python3.0中不再有效:
>>>D1 > D2      #Python2.6中的字典大小比较  
>>>sorted(D1.items()) > sorted(D2.items())    #python3.0
  习题:
  1、两种方式创建内含5个0的列表
>>>  
>>>*5
  2、两种方式来创建一个字典,有两个键'a','b',而每个键相关联的值都是0.
>>>D={'a':0,'b':0}  
>>>L1=['a','b']
  
>>>D = dict.fromkeys(L1,0)
  
>>>dict(a=0,b=0)
  3、列举四种在原处修改字典对象的运算
>>>D.pop(key)  
>>>D['spam']=10
  
>>>D.update(D2)
  
>>>del D(key)
页: [1]
查看完整版本: Python学习:字典(dictionary)