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

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