Python 获取一个字典的子集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Python 获取一个字典的子集的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何有效地遍历字典的子集?

python基于条件规则构建已有字典的子集

如何在删除每个字典的子集时合并字典对

pythonjson字典怎么导出

使用动态编程从 Python 上的子集总和问题中获取所有子集

Python新手的奇技淫巧,掌握在手的充实感