Python開発者インタビュー質問:辞書
13142 ワード
こんにちは、このブログへようこそ.私はKhadkaのコーディングラウンジからのNibesh Khadkaです.私はPython dictionariesで頻繁に質問に短いブログを書いている.
Pythonディクショナリオブジェクトは、カーリーブレース'{}で囲まれ、キーと値のペアを持ち、各ペアはコンマで区切られたデータ型です.
辞書をマップします.キーと値のペアを持っているため、意味のキーは、すべてのアドレスのIDキー、すべてのIDのIDキーを保存するためのアドレスキーを使用するように、コーダーのための多くのトラブルを保存することができます.さらに、Python > 3.6のように、辞書も順序を保持します.
辞書は辞書中のすべてのキーのリストを提供するkeys ()メソッドを持っています.
辞書には、辞書内のすべてのキーの一覧を提供するvalues ()メソッドが付属しています.
辞書は、メソッドとしてキーと値のタプルからなるリストを返すメソッドItems ()メソッドが付属しています.
ifステートメント内でキーが存在するかどうかを確認できます.
はい、Python辞書は変更可能なオブジェクトです.これは、割り当て後にキー値のペアを変更、追加または削除できます.
yes , len ()は辞書の長さを指定できます.
リスト内のpop ()メソッドはリストの最後の項目を削除できます.ただし、辞書のpop ()メソッドは指定した項目を削除できます.dict . popite ()はlistと等価です.pop ().参考までに、辞書を1つのswoopにクリアしたい場合はclear ()メソッドを使用します.
入れ子にされた辞書の項目は、辞書のちょうど別の層であり、玉ねぎの各層をむく.
辞書の項目の両方のキーと値でソートすることができます.
.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 +では、その演算子を使用してマージすることができます.
ですから、辞書にはキーと値のペアがありますが、リストはありません.したがって、辞書にリストを変換するいくつかのケースです.
キーのようなリスト項目を使用して、いくつかの方法で値を提供します.
2つの質問が意味するものはDictCount 1である.copy ().copy ()メソッドなしで辞書オブジェクトを複製しているときは、同じ辞書オブジェクトを指していますが、新しい辞書を作成していません.だから、重複リストの変更を行うときにも元の1つを変更します.
これらはPython辞書のいくつかのよくある質問です.私は、それがあなたの時間の価値があることを望みます.あなたがブログのような場合はそれを好み、出版物を購読してサポートを示すことを忘れないでください.これはKhadkaのコーディングラウンジからのNibesh Khadkaでした.
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)
どのように辞書をマージする?
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でした.
Reference
この問題について(Python開発者インタビュー質問:辞書), 我々は、より多くの情報をここで見つけました https://dev.to/nibukdk/python-developer-interview-questions-dictionaries-360bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol