用一个键值和没有相应的值在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,但考虑数据可能没有我想要的密钥的情况。