This question already has answers here:
Filter a dict of dict
(4 个回答)
5年前关闭。
有没有办法返回其内部字典的值符合某些条件的键列表
给定一个 python 字典:
有没有办法我可以得到一个键列表 [1, 2, 6 ...] 谁的内部字典符合我想要的标准?
我知道我可以简单地“循环”我的字典,但是有更好的方法吗?并且
我如何格式化一些过滤和格式化标准 1 以使其工作?
简单地输入criteria1 = "process = True",不会工作吗?
请注意,您的
用法示例:
(4 个回答)
5年前关闭。
有没有办法返回其内部字典的值符合某些条件的键列表
给定一个 python 字典:
adict = {
1: {'process':False, 'length':10},
2: {'process':True, 'length':34},
...,
n: {'process': False, 'length: -3'}
}
有没有办法我可以得到一个键列表 [1, 2, 6 ...] 谁的内部字典符合我想要的标准?
def somefiltering(critieria1, critieria2, critieria3...):
# for variable number of critieria
# logic
return list of keys
我知道我可以简单地“循环”我的字典,但是有更好的方法吗?并且
我如何格式化一些过滤和格式化标准 1 以使其工作?
简单地输入criteria1 = "process = True",不会工作吗?
最佳答案
这是一种方法:
adict = {1: {'process':False, 'length':10}, 2: {'process':True, 'length':34}, 3:{'process': False, 'length': -3}}
def somefiltering(filterDict, *criteria):
return [key for key in filterDict if all(criterion(filterDict[key]) for criterion in criteria)]
请注意,您的
somefiltering
函数需要将字典作为参数。用法示例:
somefiltering(adict, lambda d:d['process'], lambda d:d['length']>5)
# Result: [2]
somefiltering(adict, lambda d:d['length'] < 20)
# Result: [1, 3]
somefiltering(adict, lambda d:d['process'], lambda d:d['length']<5)
# Result: []
关于python - 在 dict 的 dict 中过滤项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19393576/
10-16 03:57