📜  Python|按条件过滤元组字典

📅  最后修改于: 2022-05-13 01:54:28.587000             🧑  作者: Mango

Python|按条件过滤元组字典

有时,我们可能会遇到一个非常具体的问题,即在字典中给定一个元组对作为值,我们需要根据这些对过滤字典项。这个特殊问题作为竞争性编程中许多几何算法的用例。让我们讨论可以执行此任务的某些方式。

方法 #1:使用items() + 字典理解
这些功能一起可以完成这项任务。我们可以使用items()访问所有值,并且可以通过字典理解强加条件。

# Python3 code to demonstrate working of
# Filter dictionary of tuples by condition
# Using items() + dictionary comprehension
  
# initializing dictionary
test_dict = {'a' : (6, 3), 'b' : (4, 8), 'c' : (8, 4)}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Filter dictionary of tuples by condition
# Using items() + dictionary comprehension
res = {key: val for key, val in test_dict.items() if val[0] >= 6 and val[1] <= 4}
  
# printing result
print("The filtered dictionary is : " +  str(res))
输出 :
The original dictionary is : {'b': (4, 8), 'a': (6, 3), 'c': (8, 4)}
The filtered dictionary is : {'a': (6, 3), 'c': (8, 4)}

方法 #2:使用lambda + filter()
此方法的工作方式与上述方法类似,不同之处在于使用filter函数而不是字典理解来压缩逻辑。仅适用于 Python2。

# Python code to demonstrate working of
# Filter dictionary of tuples by condition
# Using lambda + filter()
  
# initializing dictionary
test_dict = {'a' : (6, 3), 'b' : (4, 8), 'c' : (8, 4)}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Filter dictionary of tuples by condition
# Using lambda + filter()
res = dict(filter(lambda (x, (y, z)): y >= 6 and z <= 4, test_dict.items()))
  
# printing result
print("The filtered dictionary is : " +  str(res))
输出 :
The original dictionary is : {'b': (4, 8), 'a': (6, 3), 'c': (8, 4)}
The filtered dictionary is : {'a': (6, 3), 'c': (8, 4)}