python - 如何计算具有更多嵌套列表/字典的列表中给定字符串的出现次数?
问题描述
在一个技术电话屏幕上,我得到了一个类似于下面的列表,并要求我计算字符串“a”出现的次数:
input = ['a', 'b', ['a', 'b', {'a': ['b', 'a', [{'b': ['a', 'b', {'a': 'a'}]}]]}]]
如您所见,除了“a”是列表中的一个项目之外,它还可以是嵌套列表中的一个项目,以及嵌套字典中的键和/或值。
这是我目前在 Python 中的代码:
def count_letter_a(arr):
count = 0
for item in arr:
if item == 'a':
count += 1
elif isinstance(item, list):
count_letter_a(item)
elif isinstance(item, dict):
for k, v in item.items():
pass
return count
我被困在如何处理我的函数的字典键/值部分。我需要做什么?
解决方案
您可以只添加'a'
键和值的计数,或者简单地递归地将其直接应用于项目。这要求您也计算出现次数tuples
(我包括在内sets
以完成内置集合):
def count_a(obj):
if isinstance(obj, (list, tuple, set)):
return sum(map(count_a, obj))
if isinstance(obj, dict):
return sum(map(count_a, obj.items()))
if obj == 'a':
return 1
return 0
>>> x = ['a', 'b', ['a', 'b', {'a': ['b', 'a', [{'b': ['a', 'b', {'a': 'a'}]}]]}]]
>>> count_a(x)
7
推荐阅读
- c++ - 如果赋值运算符是私有的,为什么仍然允许这个赋值?
- android - Unity 2019 - Android 构建失败
- python - 遍历 pandas 中的列并替换为特定值
- python - 将最后选择的项目保留在下拉列表中
- javascript - 如何将 Node.js 库转换为可以在浏览器中使用的东西?
- sql - 获取正确的节点进行查询
- docker - Heroku Docker 部署构建参数
- windows - 如何将 Facebook 分享功能集成到 PC 软件中?
- arrays - 在 Tcl REST 的 dicts 配置数组中使用变量
- javascript - 为什么一个代码有效,而另一个无效?