字典的常用操作及is和==的比较

字典的常用操作及is和==的比较

字典的常用操作

  • 字典由key和value组成

    dict = {}
    dict = {'name': "李明"}
  • key必须是可哈希的(不可变)
    dict = {}
    dict['name'] = 'xiaoxiao'
    dict[(1, 'JackMa')] = 'Alibaba'
    dict["['houhou']"] = "houhou"
    print(dict)
    {"['houhou']": 'houhou', (1, 'JackMa'): 'Alibaba', 'name': 'xiaoxiao'}
    # 第一个元素的key是一个列表组成的字符串,也是不可变的元素
  • 字典的增删改查
    '''增加元素'''
    dict  = {}
    # 方式一
    dict['name'] = "liming"
    # 方式二
    dict.setdefault('age', 18)
    # setdefault(key, value)添加元素
    dict.setdefault('age', 19)
    # 如果字典中key已经存在,setdefault再设定value将不再继续保存
    print(dict)
    dict.setdefault('age')
    print(dict)
    {'age': None}
    # 当setdefault方法只给key的时候,value默认为None
    --------------------
    '''删除元素'''
    # 方式一:pop
    dict = {'gender': 'male', 'age': 19, 'name': '李明'}
    dict.pop()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: pop expected at least 1 arguments, got 0
    dict.pop('name')
    '李明'
    print(dict)
    {'gender': 'male', 'age': 19}
    # pop方式删除和列表中的pop有一个很大的区别,字典中必须把指定的key传入pop中才能找到并删除,否则会报上边的错误。
    
    # 方式二:del
    del dict['age']
    print(dict)
    {'gender': 'male'}
    
    # 方式三:popitem
    dict = {'gender': 'male', 'age': 18, 'name': 'lizhen'}
    print(dict.popitem())
    返回值:('gender', 'male')
    # popitem()不传递任何参数,随机删除
    
    # 方式四:clear
    dict.clear()
    print(dict)
    {}
    # 清空字典
    
    --------------------
    '''修改字典'''
    # 方式一:update
    dict = {'age': 100, 'name': 'xiaoxiao'}
    dict1 = {'gender': 'male', 'age': 150}
    print(dict1)
    {'gender': 'male', 'age': 150}
    dict.update(dict1)
    print(dict)
    {'gender': 'male', 'age': 150, 'name': 'xiaoxiao'}
    dict.update({'level': 'five'})
    print(dict)
    {'gender': 'male', 'age': 150, 'name': 'xiaoxiao', 'level': 'five'}
    # 这种方式是以另外一个字典中的元素来替换掉已有的元素,括号内必须是字典,新字典中不包括的元素,愿字典不做更改,依旧保留,原字典中没有的元素将被添加
    # 方式二
    dict['age'] = 101
    print(dict)
    {'gender': 'male', 'age': 101, 'name': 'xiaoxiao', 'level': 'five'}
    # 这种方式既可以添加也可以修改某个key的值,setdefault只能添加不存在的key,并不能修改已存在的key的值。
    
    --------------------
    '''查询方式'''
    # 方式一:方括号
    dict['age']
    101
    # 方式二:get
    dict.get('age')
    dict.get('course', '')
    101
    ''
    # 注意get方式查询的话可以设定两个参数,第一个是key,第二个自定义,如果有值返回值,如果没有返回为第二个参数
    
    # 方式三:setdefault
    dict.setdefault('age')
    dict.setdefault('age', 1000)
    101
    101
    # 注意: setdefault如果只输入已有的key或者输入key和任意的value,那么将返回对应的value值
    # setdefault首先查看是否存在key,如果不存在,添加元素,如果存在返回对应key的value值
    
  • 字典的其他操作
    # 查询所有的key值,返回的是列表, 可以进行迭代循环
    dict.keys()
    ['gender', 'age', 'name', 'level']
    for i in keys:
      print(dict[i])
    male
    101
    xiaoxiao
    five
    --------------------
    # 查询所有的values, 返回的也是列表,可以进行迭代循环
    values = dict.values()
    values
    ['male', 101, 'xiaoxiao', 'five']
    --------------------
    # 查询key、value值,组成列表, 也可以迭代循环,相当于上边两个的功能的合并
    list1 = dict.items()
    list1
    [('gender', 'male'), ('age', 101), ('name', 'xiaoxiao'), ('level', 'five')]
    for key, value in list1:
      print(key, value)
    ('gender', 'male')
    ('age', 101)
    ('name', 'xiaoxiao')
    ('level', 'five')
    
    for i in list1:
      key, value = i
      print(key, value)
    ('gender', 'male')
    ('age', 101)
    ('name', 'xiaoxiao')
    ('level', 'five')
    # items()返回的是由key和value对应的元组组成的列表。注意遍历循环两个方式,方式一直接是遍历key和value,第二种方式是把元组作为一个变量,在把元组中的内容赋值给两个对应的变量,进行输出。key, value = (1, 2)这种方式在python中被称为解构或者解包,即把一个完整的对象中的值分解并赋值给多个变量, 解构需要注意的是变量个数必须和元组中的value元组个数一致。列表也可以解构,用法一样,但是字典的解构需要注意的是解构出来的值是字典中的每一个key,并不包含value
    
  • 字典的嵌套
    dict = {
      'name': 'xiaoxiao',
      'gender': 'female',
      'age': 19,
      'record': {
          '语文': 100,
          '数学': 80
      },
      'hobby': [
          {
              'name': 'fitness',
              'year': 3
          },
          {
              'name': 'football',
              'year': 1
          }
      ]
    }
    print(dict)
    # 结果是:
    {'name': 'xiaoxiao', 'gender': 'female', 'age': 19, 'record': {'语文': 100, '数学': 80}, 'hobby': [{'name': 'fitness', 'year': 3}, {'name': 'football', 'year': 1}]}
    # 字典中可以嵌套字典、列表,可以进行多层嵌套
    print(dict['hobby'][0].get('name'))
    # 结果是:fitness

is和==的比较

  • 数字和字符串

    '''数字的比较'''
    n1 = 1
    n2 = 1
    id(n1)
    140419597884856
    id(n2)
    140419597884856
    print(n1==n2)
    print(n1 is n2)
    # 结果是: True, True
    
    a = -6
    b = -6
    id(a)
    140419599119512
    id(b)
    140419599999240
    print(a==b)
    True
    print(a is b)
    False
    # 值相等,但是内存地址不同
    ------------------
    '''字符串的比较'''
    a= 'alexx'
    id(a)
    4316628048
    b = 'alexx'
    id(a)
    4316628048
    print(a=b)
    print(a is b)
    # 结果是: True, True
    
    str1 = '!12'
    str2 = '!12'
    id(str1)
    4316659304
    id(str2)
    4316656944
    print(str1==str2)
    True
    print(str1 is str2)
    False
    # 值相等,但是内存地址不同
    
    str1 = 'sdd'* 21
    str1
    'sddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsdd'
    str2 = 'sdd' * 21
    str2
    'sddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsddsdd'
    id(str1) == id(str2)
    False
    # 值相等,但是内存不同
  • 列表的比较
    list = [1,2,3]
    list1 = [1,2,3]
    id(list)
    4316616680
    id(list1)
    4316614736
    print(list ==list1)
    True
    print(list is list1)
    False
    # 值相等,但是不共用一个内存空间
  • 元组的比较
    tu1 = (1,2,3)
    tu2 = (1,2,3)
    id(tu1)
    4316412096
    id(tu2)
    4316277888
    print(tu1==tu2)
    True
    print(tu1 is tu2)
    False
    # 值相等,但是不共用一个内存空间
  • 字典的比较
    dict = {'name': "xiaoxiao"}
    dict1 = {'name': 'xiaoxiao'}
    id(dict)
    4316618832
    id(dict1)
    4316609064
    print(dict==dict1)
    True
    print(dict is dict1)
    False
    # 值相等,但是不共用一个内存空间

Note

小数据池:

小数据池是python中专门为字符串和数字设置的存储

  • 数字的小数据池的规则:当数字是-5~256之间的时候,只要值相等时变量共用一个内存地址
  • 字符串的小数据池的规则: 如果有特殊字符,那么即使值相等,对应的内存地址也是不一样的, 空格也是特殊字符
  • 字符串单个 * 20以内的字符串值相等内存相同,超过20则内存不同
  • 如果字符串和数字符合上述的规则,那么值和内存地址都是一样的

==是比较变量的值是否相等,is比较的是变量对应的内存地址是否相同

原文地址:https://www.cnblogs.com/ddzc/p/12170817.html

时间: 2024-10-17 12:35:39

字典的常用操作及is和==的比较的相关文章

[PY3]——内置数据结构(7)——字典及其常用操作

字典及其常用操作Xmind图 ### 关于字典 ### 字典是一种key-value结构字典是无序的 ### 字典的定义 ### # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: dict # {key:value} In [2]: d={'a':1,'b':2};print(d) {'a': 1, 'b': 2} # dict([(key,value)]) 可迭代对象的元素必须是一个二元组,二元组的第0个元素为key,第1个元素的为value In

pyhton基础学习《元组、字典的常用操作》

一.元组 (1)元组的创建 tu = (11,22,33,)或者tu = tupel((11,22,33)) (2)元组常用的操作 def count(self, value): # real signature unknown; restored from __doc__ """ T.count(value) -> integer -- return number of occurrences of value """ #计数 def i

python数据类型:字典dict常用操作

字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等. 在Python3.5版本(包括此版本)之前,字典是无序的. 在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序). 当然,字典也有缺点:他的缺点就是内存消耗巨大. 优点:查询速度快,映射型

python中列表、字符串、字典的常用操作

列表操作如此下: a = ["haha","xixi","baba"]增:a.append[gg]a.insert[1,gg] 在下标为1的地方,新增 gg删:a.remove(haha) 删除列表中从左往右,第一个匹配到的 hahadel a.[0] 删除下标为0 对应的值a.pop(0) 括号里不写内容,默认删除最后一个,写了,就删除对应下标的内容改:a.[0] = "gg"查:a[0]a.index("haha

字典的常用操作

dic = { 'name': 'alex', 'name': '太白金星', 'age': 18 } 键唯一 print(dic) 数据关联性 dic = { 'name_list': ['博哥', '菊哥', 'b哥'], 'barry': { 'name': '太白金星', 'age': 18, 'hobby': 'wife', } } 增删改查dic = { 'name': '太白金星', 'age': 18,\ 'hobby': 'wife', } 增: 1,有则修改,无则添加 dic

Python 字典的特点和常用操作

一.字典帮助文档 >>> dir(dict) ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt

字典丶列表丶元组的一些常用操作

1.字典(无序) 1.创建字典: 1 person = {"name": "mr.wu", 'age': 18} 2 或 3 person = dict({"name": "mr.wu", 'age': 18}) 4 或 5 person = dict(name="mr.wu",age="18")         2.字典的常用操作 索引 新增 删除 键.值.键值对 循环 长度 1 cl

Python 字典及字典的相关操作

 定义一个字典: 其中:1. 不允许同一个键出现两次.创建时如果同一个键被赋值两次,后一个值会被记住.    2. 键必须不可变,所以可以用数字.字符串或元组充当,而用列表就不行 字典的常用操作: 1. 增.删.改.查 : 2.type, len, str 的用法 :   3. 列表的返回: 4. 字典的删除,复制,返回: 5. get和setdefault: 6. 新建字典:

Python学习笔记五:字符串常用操作,字典,三级菜单实例

字符串常用操作 7月19日,7月20日 ,7月22日,7月29日,8月29日,2月29日 首字母大写:a_str.capitalize() 统计字符串个数:a_str.count("x") 输出字符,不够的使用指定的字符补上,字符居中:a_str.center(50,"-") 判断字符串以什么结尾:a_str.endwith("xx") 将字符串中的tab转换为指定数目的空格:a_str.expandtabs(tabsize=30) 查找指定字符