Python Dictionary.get每个键有多个值-不匹配
我想从一个字典中检索一个值,其中键有多个值。在某些情况下,没有键匹配,因此我想返回Python Dictionary.get每个键有多个值-不匹配,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我想从一个字典中检索一个值,其中键有多个值。在某些情况下,没有键匹配,因此我想返回None。使用单值键作为字典是很容易的。获取(键,无),但是使用每个键的多个值有什么简单的方法呢 import datetime test = { u'ID1': {'End Date': None, 'Start Date': datetime.datetime(2014, 9, 22, 0, 0)}, u'ID2': {'End Date': None, 'Start Date': dateti
None
。使用单值键作为字典是很容易的。获取(键,无)
,但是使用每个键的多个值有什么简单的方法呢
import datetime
test = {
u'ID1': {'End Date': None, 'Start Date': datetime.datetime(2014, 9, 22, 0, 0)},
u'ID2': {'End Date': None, 'Start Date': datetime.datetime(2014, 9, 18, 0, 0)}
}
print test.get('ID1','Start Date',None)
print test.get('ID3','Start Date',None)
您有一个嵌套字典,需要执行两次查找。不过,您可以创建一个函数来完成所需的功能
def getNestedDict(d, key1, key2, default):
result1 = d.get(key1)
if result1 is None:
return default
else:
return result1.get(key2, default)
print getNestedDict(test, 'ID1', 'Start Date', None)
或:
None
是get
的默认值。换句话说,只需调用d.get(key1)
什么是key2不存在?可能更容易检查键是否存在更明确的注释,通过示例显示键1和键2是什么。这可以简化为returnd.get(key1,{}).get(key2,默认值)
可能更好的方法是将键设置为元组,如test[“ID1”,“End Date”]=None
,然后test.get((“ID1”,“结束日期”),无)
。需要澄清的是:字典的键没有多个值;而是在数据结构中有嵌套的dict,每个级别需要一个键。只需检查键是否存在I是否真的像第一个开始日期一样,但不明白为什么它不返回。它能返回一个字符串吗?您知道这方面的任何文档吗?无
是键不存在时.get()
的默认返回值。如果您不希望无
,只需使用您想要的任何其他值即可。
test.get('ID1', {}).get('Start Date')
try:
return test['ID1']['Start Date']
except KeyError:
return None