11、字典

字典

基本概念

  • 字典是Python中唯一的映射类型(哈希表)。
  • 字典对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同类型的键值。
  • keys()或者values()返回键列表或值列表。
  • items()返回包含键值对的元值。
  • 示例:
    >>> dict={'name': 'jack', 'age' : 30, 'gender':'male' }
    >>> dict['name']
    'jack'
    >>> dict['age']
    30
    >>> dict['gender']
    'male'
    >>> dict.keys()
    ['gender', 'age', 'name']
    >>> dict.values()
    ['male', 30, 'jack']
    >>> dict.items()
    [('gender', 'male'), ('age', 30), ('name', 'jack')]

创建字典

  • dict = {}
  • 使用工厂方法dict()
    fdict=dict(['x',1], ['y',2])
  • 内建方法:fromkeys(),字典中的元素具有相同的值,默认为None
    ddict={}.fromkeys(('x','y'), -1)
    #输出结果:{'x': -1, 'y': -1}

访问字典中的值

  • 直接使用key访问:key不存在会报错,可以使用has_key()或者in和not in判断,但是has_key方法即将废弃。
  • 循环遍历:for key in dict1.keys():
  • 使用迭代器:for key in dict1:

更新和删除

  • 直接用键值访问更新;内建的update()方法可以将整个字典的内容拷贝到另一个字典中。
  • del dict1[‘a‘]:删除字典中键值为a的元素
  • dict1.pop(‘a‘):删除并且返回键为‘a‘的元素
  • dict1.clear():删除字典所有元素
  • del dict1:删除整个字典

字典相关的内建函数

  • type(), str(), cmp()(cmp很少用于字典的比较,比较依次是字典的大小、键、值)

工厂函数dict()

* 例如:

dict(zip(('x','y'),(1,2)))
dict(x=1,y=2)
#输出结果:{'x': 1, 'y': 2}
  • 使用字典生成字典比用copy慢,因此这种情况下推荐使用copy()

常用函数

  • len():返回序列的大小
  • hash() : 用于判断某个对象是否可以做一个字典的键,非哈希类型报TypeError错误
  • dict.clear(): 删除字典中的所有元素
  • dict.fromkeys(seq, val=None): 以seq中的元素为键创建并返回一个字典,val为制定默认值
  • dict.get(key, default=None): 返回key的value,如果该键不存在返回default指定的值
  • dict.has_key(key):判断字典中是否存在key,建议使用in或not in代替
  • dict.items():返回健值对元组的列表
  • dict.keys():返回字典中键的列表
  • dict.iter*(): iteritems(), iterkeys(), itervalues()返回迭代子而不是列表
  • dict.pop(key[,default]):同get(),区别是若key存在,删除并返回dict[key],若不存在则返回default,未指定值,抛出KeyError异常
  • dict.setdefault(key, default=None):同set(),若key存在则返回其value,若key不存在,则dict[key]=default
  • dict.update(dict2):将dict2中的键值对添加到字典dict中,如果有重复则覆盖,原字典不存在的条目则添加进来。
  • dict.values():返回字典中所有值的列表

原文地址:https://www.cnblogs.com/zfc2201/p/8168961.html

时间: 2024-08-09 03:40:25

11、字典的相关文章

C#语言基础-11 字典/集/有序集合/不变的集合

字典 Dictionary<TKey,TValue> 字典允许按照某个键来访问元素.字典也称为映射或散列表.  字典的主要特性是能根据键快速查找值.添加到字典中的键会转换为一个散列,利用散列创建一个数字,它将索引和值关联起来. Person p1 = new Person(); p1.Age = 1; Dictionary<string,Person> dic = new Dictionary<string, Person>(); Dictionary<strin

objective-c字典

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 1 //        初始化一个空字典  2 //        NSDictionary *dictionary = [[NSDictionary alloc] init];  3 //        初始化一个空典  4 //        NSDictiona

Python之路 day2 字符串/元组/列表/字典互转

1 #-*-coding:utf-8-*- 2 3 #1.字典 4 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 5 6 #字典转为字符串,返回:<type 'str'> {'age': 7, 'name': 'Zara', 'class': 'First'} 7 print type(str(dict)), str(dict) 8 9 #字典可以转为元组,返回:('age', 'name', 'class') 10 print tup

字典树 trie

字典树数据结构实现 1 public class Trie { 2 //字典树子节点最多值,任意一个单词都是由,26个字母组成的 3 private int SIZE = 26; 4 //根节点 5 private TrieNode root; 6 //初始化字典树 7 public Trie() { 8 root = new TrieNode(); 9 } 10 11 //字典树节点 12 private class TrieNode{ 13 //存放子节点的数组 14 private Tri

关于字典的排序

如果字典是随机的,即非公共键. a={"james":23,"wade":3,"bosh":1,"yaoming":11} 字典是由key和values组成,如果想要排出数字最多的values. max(a(zip(a.values(),a.keys())) 如果是公共键,比如类似球员的号码,现在要列出最大的号码所在的字典 b=[ {"name"="james","num&qu

python中的列表和字典(二)

三. 字典以及相关使用 1. 字典的定义 dict{} 2. 字典特征:字典是无序的,key-value键值对形式,key值不重复 3. 字典的赋值:dictA = {keyA: valueA, keyB: valueB, keyC: valueC} 4. 字典的取值:dictA[keyA]  dictA.get(keyA) 5. 字典的所有键:dictA.keys()      key-value获取:dictA.items() 6. 修改字典中元素的值:dictA[keyA] = value

Python3 学习字典的所有用法

字典用{}表示,里面类似于java的map集合以键值对形式存储,特点是无序 1.新增操作 输出结果 2.删除操作 输出结果 3.查找操作 输出结果 4.update方法 更新 输出结果 5.字典转列表 输出结果 6.fromkeys() 初始化一个字典 输出结果 7.多级字典嵌套修改 输出结果 8.获取所有VALUE 输出结果 9.输出所有KEY 输出结果 10.setdefault 新增一个key和value ,如果这个key已经存在就输出,没有就新增 输出结果 11.字典的循环 输出结果 原

你真的了解字典(Dictionary)吗?

从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点. 为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路1 先判断线路1的第一个节点的下级节点是否是线路2的第一个节点,如果不是,再判断是不是线路2的第二个,如果也不是,判断是不是第三个节点,一直到最后一个. 如果第一轮没找到,再按以上思路处理线路一的第二个节点,第三个,第四个... 找到为止. 时间复杂度n2,相信如果我用的是这种方法,可肯定被Pass

数据科学入门

目录 前言 第1章导论1 1.1数据的威力1 1.2什么是数据科学1 1.3激励假设:DataSciencester2 1.3.1寻找关键联系人3 1.3.2你可能知道的数据科学家5 1.3.3工资与工作年限8 1.3.4付费账户10 1.3.5兴趣主题11 1.4展望12 第2章Python速成13 2.1基础内容13 2.1.1Python获取13 2.1.2Python之禅14 2.1.3空白形式14 2.1.4模块15 2.1.5算法16 2.1.6函数16 2.1.7字符串17 2.1

iOS开发——数据持久化Swift篇&amp;iCloud云存储

iCloud云存储 1 import UIKit 2 3 class ViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 /** 8 1:可以存储两种 9 //IOS可识别的文档 10 11 //字典对象 12 */ 13 14 // 2: Ubiquity Container............数据区域 15 16 17 /** 18 3: 19 分成多个文