在Python中的列表中计算字典
Python中的列表可能包含不同类型的项目。有时,在处理数据时,我们可能会遇到需要在特定列表中查找字典数量的问题。这可以应用于数据领域,包括 Web 开发和机器学习。让我们讨论可以执行此任务的某些方式。
Input : test_list = [4, 5, ‘gfg’]
Output : 0
Input : test_list = [{‘gfg’ : 1}]
Output : 1
Input : test_list = [10, {‘gfg’ : 1}, {‘ide’ : 2, ‘code’ : 3}, 20]
Output : 2
Input : test_list = [4, 5, ‘gfg’, {‘best’: 32, ‘gfg’: 1}, {‘CS’: 4}, (1, 2)]
Output : 2
方法 #1:使用列表理解 + isinstance()
上述功能的组合可以用来解决这个问题。在此,我们使用列表推导执行迭代并使用 isinstance() 测试字典。
# Python3 code to demonstrate working of
# Dictionary Count in List
# Using list comprehension + isinstance()
# initializing list
test_list = [10, {'gfg' : 1}, {'ide' : 2, 'code' : 3}, 20]
# printing original list
print("The original list is : " + str(test_list))
# Dictionary Count in List
# Using list comprehension + isinstance()
res = len([ele for ele in test_list if isinstance(ele, dict)])
# printing result
print("The Dictionary count : " + str(res))
输出:
The original list is : [10, {'gfg': 1}, {'code': 3, 'ide': 2}, 20]
The Dictionary count : 2
方法 #2:使用递归 + isinstance()
(用于嵌套字典)
上述功能的组合可以用来解决这个问题。在此,我们还使用递归解决了内部嵌套问题。
# Python3 code to demonstrate working of
# Dictionary Count in List
# Using recursion + isinstance()
# helper_func
def hlper_fnc(test_list):
count = 0
if isinstance(test_list, str):
return 0
if isinstance(test_list, dict):
return hlper_fnc(test_list.values()) + hlper_fnc(test_list.keys()) + 1
try:
for idx in test_list:
count = count + hlper_fnc(idx)
except TypeError:
return 0
return count
# initializing list
test_list = [10, {'gfg': 1}, {'code': 3, 'ide': 2}, 20]
# printing original list
print("The original list is : " + str(test_list))
# Dictionary Count in List
# Using recursion + isinstance()
res = hlper_fnc(test_list)
# printing result
print("The Dictionary count : " + str(res))
输出:
The original list is : [10, {'gfg': 1}, {'code': 3, 'ide': 2}, 20]
The Dictionary count : 2