キーを使用してpythonのディクショナリを初期化する方法はあるが、それらを設定するまで対応する値はないのではないかと思っていました。といった:
Definition = {'Apple': , 'ball': }
そして、後でそれらを設定できます:
Definition[key] = something
キーを初期化するだけですが、後で設定するまで対応する値がわかりません。基本的に、見つかった値を追加するキーを知っています。ありがとう。
それらをNone
に初期化できます。
fromkeys
関数を使用して、デフォルト値で辞書を初期化します。あなたの場合、デフォルト値を考慮していないので、None
で初期化します。
empty_dict = dict.fromkeys(['Apple','ball'])
これにより、empty_dict
が次のように初期化されます。
empty_dict = {'Apple': None, 'ball': None}
別の方法として、None
以外のデフォルト値で辞書を初期化する場合は、次のようにできます。
default_value = 'xyz'
nonempty_dict = dict.fromkeys(['Apple','ball'],default_value)
defaultdictを使用できます。キーが既に存在するかどうかを心配せずに辞書の値を設定できます。まだ初期化されていないキーにアクセスすると、指定した値が返されます(以下の例ではNoneが返されます)
from collections import defaultdict
your_dict = defaultdict(lambda : None)
目的が何であるか、最初にキーを初期化する理由を知っておくとよいでしょう。私はあなたがそれをする必要があるかどうか全くわかりません。
1)キーの出現回数をカウントする場合は、次のようにします。
Definition = {}
# ...
Definition[key] = Definition.get(key, 0) + 1
2)遭遇しなかったキーについて後でNone(または他の値)を取得したい場合、再びget()メソッドを使用できます:
Definition.get(key) # returns None if key not stored
Definition.get(key, default_other_than_none)
3)他のすべての目的のために、予想されるキーのリストを使用し、後で見つかったキーがそれらと一致するかどうかを確認できます。
たとえば、これらのキーの値のみを保存する場合:
expected_keys = ['Apple', 'banana']
# ...
if key_found in expected_keys:
Definition[key_found] = value
または、予想されるすべてのキーが見つかったことを確認する場合:
assert(all(key in Definition for key in expected_keys))
値を空の文字列として初期化し、後で見つかった値を入力できます。
dictionary = {'one':'','two':''}
dictionary['one']=1
dictionary['two']=2
q = input("Apple")
w = input("Ball")
Definition = {'Apple': q, 'ball': w}
@ user2989027による明確なコメントに基づいて、私は良い解決策は次のとおりだと思います:
definition = ['Apple', 'ball']
data = {'orange':1, 'pear':2, 'Apple':3, 'ball':4}
my_data = {}
for k in definition:
try:
my_data[k]=data[k]
except KeyError:
pass
print my_data
私はここで何も派手なことをしないようにしました。データと空の辞書を設定します。次に、データディクショナリ内の潜在的なキーを表す文字列のリストをループします。各値をdataからmy_dataにコピーしますが、データに必要なキーが含まれていない場合を考えます。