用一个键值和没有相应的值在Python中初始化字典

我想知道是否有一种方法来初始化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) 

您可以将这些值初始化为空string,并在稍后find它们。

 dictionary = {'one':'','two':''} dictionary['one']=1 dictionary['two']=2 

你可以使用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)对于其他所有目的,您可以使用预期密钥的列表,并检查后面find的密钥是否匹配。

例如,如果您只想存储这些键的值:

 expected_keys = ['apple', 'banana'] # ... if key_found in expected_keys: Definition[key_found] = value 

或者,如果你想确保find所有预期的密钥:

 assert(all(key in Definition for key in expected_keys)) 
 q = input("Apple") w = input("Ball") Definition = {'apple': q, 'ball': w} 

基于@ user2989027的澄清评论,我认为一个好的解决scheme如下:

 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 

我尽量不要在这里做任何事情。 我设置了我的数据和一个空字典。 然后循环遍历表示数据字典中潜在键的string列表。 我将每个值从数据复制到my_data,但考虑数据可能没有我想要的密钥的情况。