Python 獲取一個字典的子集

項目背景:前置風控接口,事中風控接口,我們項目的正常流程是,訂單信息先通過前置風控接口,只要前置風控接口返回的風險級別是拒絕交易,就不會再調用事中風控接口,前置風控返回的風險級別是非拒絕交易,就繼續調用事中風控接口,然後訂單信息纔會入庫,這裏有一個問題,事中風控接口的訂單信息基本上包含了前置風控的預訂單信息,比如:

beforeOrderInfo = {"A":"1",
"C":"3",
"E":"5"}

OrderInfo = {"A":"1",
"B":"2",
"C":"3",
"D":"4",
"E":"5"}

那麼如何從事中風控接口的訂單信息提取出前置風控所需的訂單信息呢,也就是從OrderInfo過濾出beforeOrderInfo 信息,網上有一些比較好的例子可以很好的借鑑,如下:

#encoding=utf-8

print '中國'

#獲取一個字典的子集
print '---列表推導'
#不修改原來的字典 列表推導
def sub_dict(somedict,somekeys,default=None):
return dict([(k,somedict.get(k,default)) for k in somekeys])

dict1={1:2,3:4,6:7,9:10}

somekeys=(1,9)

print sub_dict(dict1,somekeys)
print dict1

#修改原來的字典 列表推導
def sub_dict_remove(somedict, somekeys, default=None):
return dict([(k,somedict.pop(k,default)) for k in somekeys])

print sub_dict_remove(dict1,somekeys)
print dict1

print '---生成器表達式'
#不修改原來的字典 生成器表達式
def sub_dict2(somedict,somekeys,default=None):
return dict((k,somedict.get(k,default)) for k in somekeys)

dict1={1:2,3:4,6:7,9:10}

somekeys=(1,9)

print sub_dict2(dict1,somekeys)
print dict1

#修改原來的字典 生成器表達式
def sub_dict_remove2(somedict, somekeys, default=None):
return dict((k,somedict.pop(k,default)) for k in somekeys)

print sub_dict_remove2(dict1,somekeys)
print dict1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章