pythonのdictとset

2271 ワード

一、dict dictはpython内蔵の辞書で、key-valを使って記憶し、他の言語でもmapと呼ばれ、非常に速い検索速度を持ち、データ量が大きくなるにつれて遅くなることはありません(listは長さが長くなるにつれて、時間がかかります)まずdictの使用1、使い方>>>>>>d={'李双双':'女','張cc':'男'}>>>>>>>>>>{'張cc':'男','李双':'女'}2、dictを見て、では、なぜdictの速度がそんなに速いのでしょうか.
1)dictの下位実装dictの下位実装はハッシュテーブルであり、キー値対(key-val)によって直接データにアクセスする.keyとvalueをテーブルの1つの場所にマッピングすることでアクセスします.この構造はクエリーが速く、更新も非常に速いです.keyに対してhashを行う場合、同じhash値、すなわちハッシュ競合に遭遇した場合、どのように解決しますか?一般的なアプローチは2つあり,1つはリンク法,1つは開発アドレス法である.python後者を選択します.オープンアドレッシング:すべての要素がハッシュ表に格納され、ハッシュ競合が発生した場合、1つのプローブ関数によって次の候補位置が計算されます.次の選択位置に競合がある場合は、挿入する要素が格納されるまでプローブ関数によって検索され続けます.2)listの下位実装仮定辞書には1万の漢字が含まれています.ある字を調べるには、辞書を最初のページから後ろにひっくり返して、私たちが欲しい字を見つけるまで、リストの中で要素を探す方法です.リストが大きいほど、検索が遅くなります.
2つ目の方法は、まず辞書のインデックス表(例えば部首表)でこの字に対応するページ番号を調べ、そのままページにめくって、この字を見つけることです.どの字を探しても、辞書の大きさが増えるにつれて遅くなることはありません.dictは第2の実現方式である.
1)一つはinによってkeyが存在するかどうかを判断する>>if('李双双双'in d):>>print('存在')>>存在
  • dictが提供するgetメソッドによりkeyが存在しない場合はNone、または自分で指定したvalueを返すことができる
    print(d.get('李双双2'))None
    if(not d.get('李双双2'):print('存在しない')は存在しません
    if(not d.get('李双双2',False):print('存在しない')は存在しない7、要素の削除はpop(key)を使用する
    d{'張cc':'男','李双双':'男','王某某':'女'}d.pop('王某某')'女'd{'張cc':'男','李双':'男'}

  • 8、listと比較するメリットとデメリットdict a.検索と挿入の速度が比較的に速く、keyの増加に伴って遅くなることはないb.空間の使用が多く、より多くのメモリを占有する必要があるlist a.検索と挿入の速度はkeyの増加に伴って遅くなるb.空間の使用が少なく、メモリの浪費が少ない
    二.set set setはkeyのセットの無秩序に似ており、重複しないセット1、setを使用して入力セットとしてリストを提供することを定義し、重複した値はフィルタリングされます
     >>> s = set([1,2,3,3])
     >>> s
     >>> {1, 2, 3}
    

    2、要素の追加
     >>> s.add(4)
     >>> s
     >>> {1, 2, 3, 4}
    

    3、要素の削除
     >>> s.remove(4)
     >>> s
     >>> {1, 2, 3}
    
    4、set   
     
    >>> s
    >>> {1, 2, 3}
    >>> n = set([2,3,4])
    >>> s&n
    >>> {2, 3}
    
    5、set   
    
    >>> s | n
    >>> {1, 2, 3, 4}
    
    set    dict  ,  ,           ,                ,      set  “       ”