ホワイトPythonの研究ノートの一般的な方法(b)のDictの概要

辞書一般的な方法の概要

こんにちは、誰もが、皆のためのいくつかの高度な使用方法の一覧に整理して、そして今日はない非常に大規模なデータストレージ要件、辞書のために、実際には、私は個人的に非常に頻繁に辞書を使用したプログラミングで辞書Dictの関連するスキルを見て基礎の内側に見ていない友人がリンクをクリックすることができる場合は、リストよりもはるかに高速に良い選択です、私は、辞書の基本的な方法のいくつかについて話しましたPythonの基礎は、(8)辞書と実践的なスキルDaquanのを開始した良いです、前置きなしの問題は、のは、今日の高度な技術でそれを見てみましょう〜

辞書を作成します。

ここでは、直接の例で最も一般的な方法は、以下のとおりです。

first = {}           # 创建空字典
second = dict()      # 创建空字典

keys = ['Name','Age','Job','Salary']
values = ['White',50,'cook',10000]
third=dict(zip(keys,values))    # Zip创建

fouth = dict(Name='White',Age=50,Job='cook',Salary=10000)  # 等号创建

fifth = {1: {'name': 'John', 'age': '27', 'sex': 'Male'},
         2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}}    # 创建一个嵌套字典

print(first)
print(second)
print(third)
print(fouth)
print(fifth[1])


Out: {}
     {}
     {'Name': 'White', 'Age': 50, 'Job': 'cook', 'Salary': 10000}
     {'Name': 'White', 'Age': 50, 'Job': 'cook', 'Salary': 10000}
     {'name': 'John', 'age': '27', 'sex': 'Male'}

复制代码

ここでは、直接作成することができます}または{dictの()、または直接キーに辞書に空の辞書:割り当て、郵便番号や直接割り当て等号の形で値が、また、非常に便利であるあなたはまた、非常に単純な実装することができネストされた複数の層を必要とする場合、それを作成する方法についてそんなに

辞書ソート

辞書のソートについては、我々は2つのオプションがあり、最初は、キーの値に基づいてソートされた辞書です、第二の値をソート値に基づいており、私たちは一つ一つを聞かせて、すべての最初の私たちは、テストのための新しい辞書を作成してみましょう:

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])

复制代码

キーの値は、に従ってソートされています

ここでは、辞書final_resultを作成し、キーの値はサブジェクト名があり、値が最初のキーの値に従ってソート、昇順でキー値は、そのようなソート、オペレータ、ラムダなど、多くの代替方法によれば、私たちを聞かせて、スコアの値は次のとおりです。

print(sorted(final_result.items())) # 根据key的值升序
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

复制代码
import operator
print(sorted(final_result.items(),key=operator.itemgetter(0)))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

复制代码
print(sorted(final_result.items(),key=lambda x:x[0]))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]
复制代码

十分な真のアド逆限り高い順にキー値=、デフォルトの機能が逆= Falseを、facie結果をソートしているため。

print(sorted(final_result.items(),reverse=True))   # 根据key的值降序
Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]

复制代码
import operator
print(sorted(final_result.items(),key=operator.itemgetter(0),reverse=True))
Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]


复制代码
print(sorted(final_result.items(),key=lambda x:x[0],reverse=True))
Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]

复制代码

ハハ、私が話した後、特別なを取り、単にアーティファクトを減らすフィルタ、私はより多く使用し始めたとき、最後に少し神託の気持ちを感じますので、多くの関連ラムダ関数をまとめることができますがあります

値の値に応じてソートされています

実際には、我々はソート・キーに基づいて、だけでなく、どのように値の順序を推測見、私たちは昇順を見てみましょう:

print(sorted(final_result.items(),key=lambda x:x[1])) #根据Value升序
Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

复制代码
import operator
print(sorted(final_result.items(),key=operator.itemgetter(1)))

Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

复制代码

降順、あまりにも、より多くのプラス=真逆の何物でもありません、1例ずつではありません。

print(sorted(final_result.items(),key=lambda v:v[1],reverse=True))
Out:[('English', 96), ('Math', 80), ('Chinese', 78), ('Art', 75), ('Science', 60)]
复制代码

辞書のマージ(マージ)

3.5 **上記直接使用することができ、2.7のユーザーは、申し訳ありませんと言うのは少し栗を見てみましょう、草が常に環境に優しい技術がそうなっていると言うために、ここで、一般的なトリックのPythonです。

def Merge(dict1, dict2):
    res = {**dict1, **dict2}
    return res

dict1 = {'a': 10, 'b': 8,'c':2}
dict2 = {'d': 6, 'c': 4}
dict3 = Merge(dict1, dict2)
print(dict3)

Out:{'a': 10, 'b': 8, 'c': 4, 'd': 6}


复制代码

ここでは順序が重要であり、我々は誰を、カバー誰について楽観的でなければならない、我々はこのようになります順序を入れ替える場合:

def Merge(dict1, dict2):
    res = {**dict2, **dict1} #  交换了顺序
    return res

dict1 = {'a': 10, 'b': 8,'c':2}
dict2 = {'d': 6, 'c': 4}
dict3 = Merge(dict1, dict2)
print(dict3)
Out:{'d': 6, 'c': 2, 'a': 10, 'b': 8}

复制代码

Python2の友人は心配しないで、天然の解決策があり、それはそれは、コードの上に、また、非常に便利ですが、更新機能を使用することです:

dict1 = {'a': 10, 'b': 8,'c':2}
dict2 = {'d': 6, 'c': 4}

dict2.update(dict1)
print(dict2)

Out:{'d': 6, 'c': 2, 'a': 10, 'b': 8}

复制代码

Json.dumps()は、出力のdictを美化使用

私たちはこのような状況以下の辞書が発生した場合、従来のプリント出力によれば、このようになります。

my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
print(my_mapping)
Out:{'a': 23, 'b': 42, 'c': 12648430}

复制代码

我々はダンプを挙げることができる場合でも、メソッドのJSONライブラリは、はるかに良い結果が得られます。

import json
print(json.dumps(my_mapping, indent=4, sort_keys=True))
Out:{
    "a": 23,
    "b": 42,
    "c": 12648430
    }

复制代码

開梱辞書パラメータ

Pythonは魔法の多くは、以下のような、アンパック辞書を実現することができる簡単な方法です:

def unpack(k1,k2,k3):
    print(k1,k2,k3)

my_dict = {'k1':'value1','k2':'value2','k3':'value3'}
unpack(**my_dict)

Out: value1 value2 value3

复制代码

ちなみに、カザフスタン、私は話の裏に特化ので、ご期待するメソッドおよび関連引数kwargsから!

辞書の導出

これは、私は私の上司に相談し、彼は私が使用しないようにしてくださいお勧めします、私はその理由を理解していないので、私は偉大な神のように導出のカザフスタン、具体的な使用方法とリストを答えるために出てくることができている場合は、知っていない、より多くのもつれ書きますコード:

import json
first = {x:'A'+str(x) for x in range(8)}
print(json.dumps(first,indent=4, sort_keys=True))     # 这种情况用json输出好看些
 
Out:{             
    "0": "A0",
    "1": "A1",
    "2": "A2",
    "3": "A3",
    "4": "A4",
    "5": "A5",
    "6": "A6",
    "7": "A7"
     }
复制代码

またはのようなものを使用します。

second={v:k for k,v in first.items()}
print(json.dumps(second,indent=4))
Out:{
    "A0": 0,
    "A1": 1,
    "A2": 2,
    "A3": 3,
    "A4": 4,
    "A5": 5,
    "A6": 6,
    "A7": 7
     }

复制代码

使用方法の他の混乱のためとして、あなたは自分の母を考えることができます

概要

今日、我々は体系的にポイントをとかして:

  • さまざまな方法辞書を作成します
  • 辞書ソート
  • 辞書合併
  • 辞書アンパック
  • JSONの最適化出力
  • 辞書の導出

皆を助けたいという願望は、私が追加します何か面白い方法と技術があるなら、私が思うに従ってください!

ます。https://juejin.im/post/5cfb667af265da1bba58f643で再現

おすすめ

転載: blog.csdn.net/weixin_34293902/article/details/91454955