【Day 13】Dictionary 介绍

前言

dict 用於需要查表的时候非常方便,今天要来介绍一下 dict 的用法!

Dictionary

  • 储存 keyvalue 对应的资料
  • 资料没有顺序性,和 set 一样
  • dict[key] 可以读取 key 对应的 value,若 key 不存在於 dict 则会出现 KeyError 的错误导致程序中断
  • 一整组 keyvalue 称为一个 item

建立 dict

dict1 = {}     #创建一个空的 dict
print(type(dict1))
dict2 = {'a':'A', 'b':'B', 'c':'C'}    # 小写是 key 大写是 value
print(type(dict2))
print(dict2)
print(dict2.items())

取得 value

  • dict[]:取得特定 key 对应的 value,找错 'key' 会终止程序

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2['a'])   # 取得的值为 A
    print(dict2['d'])   # KeyError: dict2 内没有 'd' 所以到这里停止
    
  • dict.get(key):取得特定 key 对应的 value 不会终止程序

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.get('a'))   # 取得的值为 A 
    print(dict2.get('d'))   # key 没有 'd' 所以输出是 None
    
  • dict.values:取得所有 value

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.values())
    

取得 key

  • dict.keys()

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    print(dict2.keys())
    

新增 or 改变 dict 内的元素

  • dict[key] = value:若 key 本来就存在,会改变对应的 value,若不存在则会新增这组 keyvalue

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2['a'] = 'XXX'    # 把 'a' 对应的 value 改为 XXX
    print(dict2)
    dict2['d'] = 'D'      # 创建一个 'd' 的 key
    print(dict2)
    

  • dict.update():括号内要放一组 {key : value}

    dict2 = {'a':'A', 'b':'B', 'c':'C'}  
    dict2.update({'a':'FF'})
    dict2.update({'d':'DDD'})
    print(dict2)
    

删除 dict 内的元素

  • dict.pop(key):移除括号内的 key 对应的 value,括号 () 不能是空的!

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.pop('b')    # 括号内一定要放 key,不然会错误
    print(dict2)
    

  • dict.popitem():移除最後一个 dict 内的元素,括号 () 内要是空的

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.popitem()
    print(dict2)
    

  • dict.clear():清除 dict 变为空的 dictdict 还在,还可以再重新新增元素进去。

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dict2.clear()
    print(dict2)
    

  • del:直接删除整个 dict,无法 print 或把值放进去,取值的话会 Error。

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    del dict2
    

回圈

  • 直接跑回圈的话取出的值是 key

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2:
        print(x, end = ' ')
    

    或用 dict.keys() 记得加 s

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2.keys():
        print(x, end = ' ')   
    

  • 要取得 value 要加 dict[]

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2:
        print(dict2[x], end = ' ')
    

    或用 dict.values() 记得加 s

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x in dict2.values():
        print(x, end = ' ')
    

  • 把整个 item 都取出

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    for x, y in dict2.items():
        print(x, y)
    

复制 dict

  • dict2 = dict1.copy():两个 dict id 不会一样,不会互相影响

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict2.copy()
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

  • dict2 = dict1:id 会一样,会互相影响

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict2
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

  • dict() 复制:id 不会一样

    dict2 = {'a':'A', 'b':'B', 'c':'C'}
    dddd = dict(dict2)
    print(id(dict2))
    print(id(dddd))
    print(dddd)
    

待续...


<<:  [Day14]What is Hash? part.2

>>:  将机器人部属到网路上去

[day6]API串接-Message内文加密

在串接API时,遇到最大的坎就是Message内文加密了, 就让我们来试看看罗~ Message内文...

Day 19 - 实测盘中订阅 tick 与 bidask 资料是否有先後顺序 (上)

本篇重点 刚好看到有人在询问,是否先有tick资料,才会更新bidask的资料 这里就来实测,顺便练...

Day47. 组合模式

本文同步更新於blog Composite Pattern 允许将对象组合成树形结构来表现整体/部...

VSCode 套件推荐系列 - 下

最後一篇,持续来介绍 VSCode 的套件,让你靠一套文字编辑器在路上横着走! CodeSpellC...

[Day28]无线耳机与蓝牙技术-组合应用

随着技术的进步,现在的蓝牙相较於早期 除了能达成所需的功耗愈来愈低以外,资料的传输量却能做得愈来愈高...