Python内蔵データセットと辞書


コレクションと辞書
  • 1.集合:一山は二虎を許さない
  • 1.1コレクションの作成:
  • 1.2. 集合のプロパティ:
  • は+,*,index,slice(集合が無秩序で重複しないため)
  • をサポートしていません.
  • はinとnot in
  • をサポートする
  • test 1:n個の1-1000の間の数をランダムに生成し、
  • に並べ替える.
  • 1.3. 集合の共通動作
  • 1.3.1増加
  • add:単一要素
  • を追加
  • update:複数の要素を追加
  • 1.3.2. 削除
  • remove:要素が存在する場合は削除し、そうでない場合は
  • とエラーが発生します.
  • discard:要素が存在する場合は削除し、そうでない場合はdo nothing
  • pop:ランダム
  • 要素を削除し、集合が空の場合は
  • とエラーが発生します.
  • 1.3.3. 表示
  • 2.frozenset不変の集合
  • 3.辞書dict
  • 3.1. 辞書の作成dict
  • 3.2. 辞書の特性
  • は+,*,index,slice(集合が無秩序で重複しないため)
  • をサポートしていません.
  • はinとnot in
  • をサポートする
  • 3.3. 辞書の一般的な方法
  • 3.3.1. 表示
  • 3.3.2. 追加および変更
  • 3.3.3. 削除
  • 3.4. 辞書(for)
  • を巡る
  • 4.defaultdict
  • 課後練習

  • 1.集合:一山二虎を許さない
    セット(set)は です.1,2,3,4,1,2,3 = 1,2,3,4
    1.1コレクションの作成:
    1).         { }    set()       ;
    2).     :
               set()     { }
     { }           。
    

    s={1,2,3,1,2,3}#{1,2,3}print(s,type(s))出力時に直接注意点1:集合の要素が必要な場合は可変データ型ではないことに注意する.s={1,2,3,[1,2,3]}######リストは可変データ型なので、この書き込みエラー
    注意点2: {}, set()s = set()
    1.2. 集合のプロパティ:
    +,*,index,slice(コレクションが無秩序で重複しないため)はサポートされていません.
    inとnot inのサポート
    print(1 in {1, 2, 3, 4})
    test 1:n個の1-1000の間の数をランダムに生成し、並べ替える
    import random
    n = int(input("  n:"))
    s=set()
    for i in range(n):
      s.add(random.randint(1,1000))
    print(sorted(s,reverse=True))
    

    1.3. 集合の一般的な操作
    1.3.1増加
    add:単一要素の追加
    update:複数の要素を追加
    s = {1, 2, 3} s.add(100) #{1,2,3,100}
    s = {1, 2, 3} s.update({4, 5, 6}) #{1,2,3,4,5,6}
    1.3.2. 削除
    remove:要素が存在する場合、削除します.そうしないと、エラーが発生します.
    discard:要素が存在する場合は削除し、そうでない場合はdo nothing
    pop:ランダム
    要素を削除し、集合が空の場合はエラーを報告します.
    s = {1, 2, 3} s.remove(3) print(s) s = {1, 2, 3} s.discard(100) print(s) s = {1, 66, 2,99, 78, 3} s.pop() print(s)
    1.3.3. 表示
    差:
    s1 - s2
    交差:
    s1 & s2
    対称差分:
    s1 ^ s2
    並列:s1 | s2
    s 1={1,2,3}s 2={1,2}print(s1 - s2)#{3}print(s1 & s2)#{1,2}s 1={1,2,3}s 2={1,2,4}print(s1 ^ s2)#{3,4},{1, 2, 3, 4} - {1, 2} = {3,4}並列集合hから交差を減算する,すなわち,集合中の重複しない要素の集合print(s1 | s2)#{1,2,3,4}
    print(s1.issubset(s2)) # False print(s1.isdisjoint(s2)) # False
    2.frozenset不変の集合
       set                (  add、remove、discard、xxx_update  ),frozenset     ;set              ,fronzenset    。
    

    s = frozenset({1, 2, 3}) print(s, type(s)) #
    3.辞書dict , 。 , ,
    3.1. 辞書の作成dictkey-value d={“name”:“westos”,“age”:18,“city”:“西安”}print(d,type(d))d = {}#空辞書
    3.2. 辞書の特性
    +,*,index,slice(コレクションが無秩序で重複しないため)はサポートされていません.
    inとnot inのサポート
    d={"name":"westos","age":18,"city":"西安"}print(‘name’in d)#True,すべてのkeyがメンバーprint("westos"in d)#Falseに値するかどうかを判断する
    3.3. 辞書の常用方法
    3.3.1. 表示
    すべて表示
    keys, values, items
    ローカルの表示
    d[key], d.get(key), d.get(key, default-value)
    d={"name":"westos","age":18,"city":"西安"}
    print(d.keys())
    #辞書のすべてのkey値を表示
    print(d.values())
    #辞書のすべてのvalue値を表示
    print(d.items())
    #辞書のすべてのkey-value値(item要素)を表示
    print(d[‘name’])
    #キーがnameに対応するvalue値を表示
    print(d[‘province’])
    #keyに対応するvlaue値を表示します.存在しない場合はエラーが表示されます.print(d.get('province'))
    #keyに対応するvlaue値を表示し、存在する場合は None.を返します.print(d.get('province', " "))
    #keyに対応するvlaue値を表示し、存在する場合は戻り、存在しない場合はデフォルト値を返します.
    3.3.2. 追加と変更
    d={“name”:“westos”,“age”:18}d[‘city’]=“西安”keyが存在しない場合print(d)#{‘name’:‘westos’,‘age’:18,‘city’:‘西安’}d[‘city’]=“北京”keyが存在する場合value値print(d)#{‘name’:‘westos’,‘age’:18,‘city’:‘北京’}を修正する
    d={"name":"westos","age":18}d.setdefault(‘city’,‘西安’)#keyが存在しない場合print(d)d.setdefault(‘city’,‘北京’)#keyが存在する場合do nothing print(d)
    3.3.3. 削除
    d = {“name”:“westos”, “age”:18} d.pop(‘name’) print(d) d = {“name”:“westos”, “age”:18} del d[‘name’] print(d)
    3.4. 辞書を巡る(for)
    d={“name”:“westos”,“age”:18,“city”:“西安”}デフォルトでは、辞書はkey値のみを巡回します
    for item in d:
        print(item)
    

    name age city辞書のkeyとvalueを巡ったら?(特に重要)
    for key,value in d.items():  # [('name', 'westos'), ('age', 18), ('city', '  ')]
        print(f"key={key}, value={value}")
    
    

    key=name,value=westos key=age,value=18 key=city,value=西安
    4.defaultdict
    defaultdict提供default_factoryプロパティ.存在しないkeyのためにデフォルトのvalueを自動的に生成します.
    from collections import  defaultdict
    
    #     ,    value
    d = defaultdict(int)
    d['views'] += 1
    d['transfer'] += 1
    print(d)  #defaultdict(, {'views': 1, 'transfer': 1})
    
    d = defaultdict(list)
    d['allow_users'].append('westos')
    d['deny_users'].extend(['user1', 'user2'])
    print(d)  #{'allow_users': ['westos'], 'deny_users': ['user1', 'user2']})
    
    d = defaultdict(set)
    d['love_movies'].add("    ")
    d['dislike_movies'].update({'  3', '  xxxx'})
    print(d)   #{'love_movies': {'    '}, 'dislike_movies': {'  xxxx', '  3'}})
    

    レッスン後の練習
  • の合計:https://leetcode-cn.com/problems/two-sum/
  • 重複のない最長男列:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/