Python開発者インタビュー質問:辞書


こんにちは、このブログへようこそ.私はKhadkaのコーディングラウンジからのNibesh Khadkaです.私はPython dictionariesで頻繁に質問に短いブログを書いている.

Pythonの辞書とは何ですか?どうやって働くの?


Pythonディクショナリオブジェクトは、カーリーブレース'{}で囲まれ、キーと値のペアを持ち、各ペアはコンマで区切られたデータ型です.
辞書をマップします.キーと値のペアを持っているため、意味のキーは、すべてのアドレスのIDキー、すべてのIDのIDキーを保存するためのアドレスキーを使用するように、コーダーのための多くのトラブルを保存することができます.さらに、Python > 3.6のように、辞書も順序を保持します.
# Creating a dictionary
# var_name = {key:value} or var_name = dict({key:value})
user_info = {'name': 'Nibesh', 'education': 'Bachelors Degree', 'age': 27}
# Print type
print("Variable user_info is a {}.".format(type(user_info)))
# Print Dictionary
print(user_info)
# Now to get a specific information just fetch it using key.
print(user_info['name'])
Output
Variable user_info is a <class 'dict'>.
{'name': 'Nibesh', 'education': 'Bachelors Degree', 'age': 27} 
Nibesh

辞書のキーはどのようにすればよいですか。


辞書は辞書中のすべてのキーのリストを提供するkeys ()メソッドを持っています.
print(user_info.keys())
#Output
dict_keys(['name', 'education', 'age'])

辞書の値はどのようにすればよいですか。


辞書には、辞書内のすべてのキーの一覧を提供するvalues ()メソッドが付属しています.
print(user_info.values())
#OutPut
dict_values(['Nibesh', 'Bachelors Degree', 27])

どのように辞書のキーと値のペアを取得するには?


辞書は、メソッドとしてキーと値のタプルからなるリストを返すメソッドItems ()メソッドが付属しています.
print(user_info.items())
# Output
dict_items([('name', 'Nibesh'), ('education', 'Bachelors Degree'), ('age', 27)])

どのように、私はキーが辞書に存在するかどうかチェックしますか?


ifステートメント内でキーが存在するかどうかを確認できます.
if 'name' in user_info:
    print(user_info['name'])
##Output
Nibesh

辞書は使えますか。


はい、Python辞書は変更可能なオブジェクトです.これは、割り当て後にキー値のペアを変更、追加または削除できます.
# Mutable Dict
student_info = dict({'id': 12,
 'nationality': 'China',
 'data_enrolled': 2015,
 'is_present': 'No',
 'gender': 'Male'
})

print("Student info original: ", student_info)


# We made a mistake while gender registration
# Lets correct it
# Lets change the gender to female
student_info['gender'] = 'Female'
print("Student info after corrections: ", student_info)

#Output:

Student info original:  {'id': 12, 'nationality': 'China', 'data_enrolled': 2015, 'is_present': 'No', 'gender': 'Male'}

Student info after corrections:  {'id': 12, 'nationality': 'China', 'data_enrolled': 2015, 'is_present': 'No', 'gender': 'Female'}

辞書の長さを見つけることはできますか。


yes , len ()は辞書の長さを指定できます.
student_info = dict({'id': 12,
'nationality': 'China',
'data_enrolled': 2015,
'is_present': 'No',
'gender': 'Male'
})
print(len(student_info))
# Output
5

リストの違いは何ですか。pop ()と辞書。pop ()


リスト内のpop ()メソッドはリストの最後の項目を削除できます.ただし、辞書のpop ()メソッドは指定した項目を削除できます.dict . popite ()はlistと等価です.pop ().参考までに、辞書を1つのswoopにクリアしたい場合はclear ()メソッドを使用します.
recurrence_dict = {
'current_location': 'Usa',
'job': 'sofware engineer',
'older_location': 'Canada'}
print("Before popping: ", recurrence_dict)
# Lets remove the last item
recurrence_dict.popitem()
print("After popping: ", recurrence_dict)
#Output

Before popping:  {'current_location': 'Usa', 'job': 'sofware engineer', 'older_location': 'Canada'}

After popping:  {'current_location': 'Usa', 'job': 'sofware engineer'}

入れ子になった辞書項目の項目へのアクセス方法


入れ子にされた辞書の項目は、辞書のちょうど別の層であり、玉ねぎの各層をむく.
# Nested Dictionary  with dictionary
user_info = {
             1: {'name': 'Jason', 'age': '17', 'gender': 'Male'},
             2: {'name': 'Jessica', 'age': '30', 'gender': 'Female'}}

# Accessing Dictionary inside the dictionary

# Lets get gender
print(user_info[1]['gender'])
# Nested Dictionary  with list
subject_info = {
'Science Topics': ['Mathematics', 'Computer Science', 'Biology'],
'Arts Topics': ['Music', 'Dance']}

# Accessing the list inside the dictionary
# Lest access the last item in the list

print(subject_info['Science Topics'][-1])
#Output

Male

Biology

どのように辞書のキーと値をソートするには?


辞書の項目の両方のキーと値でソートすることができます.
# Sort dictionary
students_by_regions_finland = {
'uusimaa': 1000000,
'nothern ostrobothina': 900000,
'eastern finlnad': 900000
}

# Print dictionary
print(students_by_regions_finland)

# Sort by keys
students_by_regions_finland_ascending = dict(sorted(students_by_regions_finland.items(), key=lambda dict_item: dict_item))
print(students_by_regions_finland_ascending)


# sort by values
software_dev_salary = {
'junior_web_developer': 50000,
'senior_data_scientist': 120000,
'machine_learning_engineer': 90000,
}
software_dev_salary_sorted_descending =
dict(sorted(software_dev_salary.items(), key=lambda dict_item: dict_item[1], reverse=True))
print(software_dev_salary)
print(software_dev_salary_sorted_descending)

#Output

{'uusimaa': 1000000, 'nothern ostrobothina': 900000, 'eastern finlnad': 900000}

{'eastern finlnad': 900000, 'nothern ostrobothina': 900000, 'uusimaa': 1000000}

{'junior_web_developer': 50000, 'senior_data_scientist': 120000, 'machine_learning_engineer': 90000}

{'senior_data_scientist': 120000, 'machine_learning_engineer': 90000, 'junior_web_developer': 50000}
今何が起こっているかを理解するためにコードを壊しましょうか?
sorted( software_dev_salary.items(), key=lambda dict_item: dict_item[1], reverse=True)
  • .item ()は、キーと値の組のタプルからなるリストを返します.そのリストはリストのように見えますが、型はクラスDECTHERNアイテムです.
  • Key =ラムダDictChordItem [ 1 ]は、前のコードと2番目の項目(DictChanges [ 1 ])で返されるリスト内のアクセスタプル(DictCountアイテム)に値であることを指示します.
  • Reverse = true、降順を意味する.
  • ソートされた( SoftwareChangedRange Salary . Items (), key = lambda DictChrory : DictChanges項目[ 1 ], Reverse = True );結合されたキー値ペアタプル
  • のリストを返します.
  • dict ( sorted (...), )でラッピングすると、その項目を辞書に変換します.
  • BTW、同じロジックを使用して最大値と最小キー値のペアを取得することができます.しかし、ソートの代わりにmax ()とmin ()を使用します.MAX ( SoftwareCrandeVary Salary . items (), key = lambda DictChrance : DictChanges [ 1 ])あなたはコードで何が起こっているか説明できますか?

    どのように辞書をマージする?


    Pythonディクショナリは、[ 1 ]として合併することができます.Python 3.9 +では、その演算子を使用してマージすることができます.
    # Merge Dictionary
    dict_1 = {'name': 'Harry', 'age': 27, 'location': 'Helsinki'}
    dict_2 = {'job': 'Architect'}
    
    # Merge dict using ** argument
    dict_merged_1 = {**dict_1, **dict_2}
    print(dict_merged_1)
    
    # Python 3.9 has new feature merge "|" operator
    dict_merged_2 = dict_1 | dict_2
    print(dict_merged_2)
    
    #Output
    
    {'name': 'Harry', 'age': 27, 'location': 'Helsinki', 'job': 'Architect'}
    
    {'name': 'Harry', 'age': 27, 'location': 'Helsinki', 'job': 'Architect'}
    

    リストを辞書に変える方法?


    ですから、辞書にはキーと値のペアがありますが、リストはありません.したがって、辞書にリストを変換するいくつかのケースです.

    つのリストの場合


    キーのようなリスト項目を使用して、いくつかの方法で値を提供します.
    ## List to dictionary
    pets= ['dog','cat','guinea pig', 'parrot']
    
    # add one value to all
    pets_owner ={animal:'Jackson' for animal in pets}
    print(pets_owner)
    
    #Output
    
    {'dog': 'Jackson', 'cat': 'Jackson', 'guinea pig': 'Jackson', 'parrot': 'Jackson'}
    

    ループとzipの2つのリスト


    ## List to dictionary
    pets= ['dog','cat','guinea pig', 'parrot']
    
    # Adding two list using zip and for loops
    numbers =  [2,4,10,2]
    pet_number_dict={}
    
    for animal,num in zip(pets,numbers):
        pet_number_dict[animal]= num
    print(pet_number_dict)
    
    #Output
    
    {'dog': 2, 'cat': 4, 'guinea pig': 10, 'parrot': 2}
    

    zipを使用して、2つのリストでの理解。


    ## List to dictionary
    pets= ['dog','cat','guinea pig', 'parrot']
    
    # Add different values  using zip  and comprehension
    pet_number_dict_2 = {animal:num for animal,num in zip(pets,numbers)}
    
    print(pet_number_dict_2)
    
    #Output
    
    {'dog': 2, 'cat': 4, 'guinea pig': 10, 'parrot': 2}
    

    copy ()の有無による辞書の複製の違いは何ですか?


    2つの質問が意味するものはDictCount 1である.copy ().copy ()メソッドなしで辞書オブジェクトを複製しているときは、同じ辞書オブジェクトを指していますが、新しい辞書を作成していません.だから、重複リストの変更を行うときにも元の1つを変更します.
    # Duplicating dict with and without copy
    
    to_buy_list = {
    'eggs': '1 karton',
    'banana': '1 kg',
    'milk': '1 ltr',
    'sugar': '1 kg'
    }
    print("Original List before {}".format(to_buy_list))
    
    # Lets duplicate without copy
    to_buy_list_2 = to_buy_list
    
    # Lets make change to duplicate list
    to_buy_list_2['salt'] = '1 kg'
    print("Original List after duplication {}".format(to_buy_list))
    print("Are the memory address of two dicts same? {}".format(id(to_buy_list) == id(to_buy_list_2)))
    
    #Output
    
    Original List before {'eggs': '1 karton', 'banana': '1 kg', 'milk': '1 ltr', 'sugar': '1 kg'}
    
    Original List after duplication {'eggs': '1 karton', 'banana': '1 kg', 'milk': '1 ltr', 'sugar': '1 kg', 'salt': '1 kg'}
    Are the memory address of two dicts the same? True
    
    さあ、copy ()メソッドを使用してください.
    # Duplicating dict with and without copy
    to_buy_list = {
        'eggs': '1 karton',
        'banana': '1 kg',
        'milk': '1 ltr',
        'sugar': '1 kg'
    
    }
    print("Original List before {}".format(to_buy_list))
    
    # Lets duplicate without copy
    to_buy_list_2 = to_buy_list.copy()
    
    # Lets make change to duplicate list
    to_buy_list_2['salt'] = '1 kg'
    
    print("Original List after duplication {}".format(to_buy_list))
    
    print("Are the memory address of two dicts same? {}".format(
        id(to_buy_list) == id(to_buy_list_2)))
    
    #Output
    
    Original List before {'eggs': '1 karton', 'banana': '1 kg', 'milk': '1 ltr', 'sugar': '1 kg'}
    
    Original List after duplication {'eggs': '1 karton', 'banana': '1 kg', 'milk': '1 ltr', 'sugar': '1 kg'}
    
    Are the memory address of two dicts the same? False
    

    これらはPython辞書のいくつかのよくある質問です.私は、それがあなたの時間の価値があることを望みます.あなたがブログのような場合はそれを好み、出版物を購読してサポートを示すことを忘れないでください.これはKhadkaのコーディングラウンジからのNibesh Khadkaでした.