1.Python dict数据类型的实现原理

Python dict的底层数据结构还是数组,但是元素添加以及获取,需要定位到在数组中的问题,使用的是哈希表的原理。


2.字典的定义

#直接定义
d = {'zhangsan': '82781443', 'lisi': '827866123', 'wangwu': '82781203'}

#用列表初始化
items = [('zhangsan', '82781443'), ('lisi', '827866123'), ('wangwu', '82781203')]
d = dict(items)

#用dict函数初始化
d = dict(zhangsan='82781443', lisi='827866123', wangwu='82781203')

#用dict函数初始化
d1 = {'zhangsan': '82781443', 'lisi': '827866123'}
d2 = {'wangwu': '82781203'}
d = dict(d1, **d2)

#使用列表,然后通过zip/dict来构造
names = ['zhangsan', 'lisi', 'wangwu']
contacts = ['82781443', '827866123', '82781203']
d = dict(zip(names, contacts))


3.字典的操作

(a)基本的操作

len(d)   #返回字典的key-value对的数量
d[k] #取出字典d中key为k的值
d[k]=v #给字典中指定的key赋值,若key在字典中不存在,则增加key-value键值对
del d[k] #删除键为k的项
k in d #检查d中是否有含有键为k的项
(b)字典方法
d.clear()        #清除字典中所有的项d.copy()         #浅拷贝d1 = deepcopy(d) #深拷贝{}.fromkeys(['keyname_1', 'keyname_2'])     #生成一个{'key1': None, 'key2': None}的字典dict.fromkeys(['keyname_1', 'keyname_2'])   #同上d.get('keyname')  #获取key为keyname的元素值,如果不存在返回Noned.has_key('keyname')         #判断字典对象是否有key为keyname的元素d.pop('keyname')             #获取key为keyname的值,并将该key-value对从dict中移除d.popitem()                  #从字典对象中随机弹出弹出一个key-value对,并在dict中移除d.setdefault('keyname', 'valuename')  #返回字典对象中key为keyname所对应的值。如果keyname在字典中不存在,那么会在字典中添加keyname:valuename键值对;如果keyname在字典中存在,那么直接过去该keyname对应的值d.update(x)                  #使用字典x去更新字典d,若x的key在d中不存在就添加到d中;若x的key在d中存在,那么就会覆盖d中的valued.items()和d.iteritems()     #items返回字典key-value的列表,iteritems返回所有key-value的迭代器d.keys()和d.iterkeys()       #keys返回字典key的列表,iterkeys返回字典key的迭代器d.values()和d.itervalues()   #values返回字典中所有value的列表,itervalues()返回字典中所有的value的迭代器

更多相关文章

  1. 如何使用不同的类python在一个类中的一个窗口中更新列表框
  2. python打印列表的下标和值的例子:
  3. 使用python如何在列表列表中找到元素,而关键元素是内部列表的元素
  4. Python学习记录--关于列表和字典的比较
  5. 如何将两个列表中的数据写入csv中的列?
  6. 在python 3.3列表中查找最小值
  7. python基础练习--列表问题
  8. 如何用所有可能的方式将一个列表分割成对?
  9. 学习python的第十六天(迭代器,三元表达式,列表生成式,字典生成式,

随机推荐

  1. C#的委托事件在winform窗体中实现传值备
  2. Java向MySQL数据库插入时间类型Date数据
  3. SQL优化--使用 EXISTS 代替 IN 和 inner
  4. 如何在SQLite中获取最后的插入Id ?
  5. LinuxRPM安装MySQL5.0.16
  6. sqlDataRead dr = db.reDr(sqlStr); 出错
  7. mysql关键字与表名字段相同的解决方法
  8. 《PHP, MySQL, Javascript和CSS》读书随
  9. Deploying OpenFire for IM (instant mes
  10. PHP基础教程十四之使用MySqli操作数据库