![](/img/trans.png)
[英]numpy - how do I count the occurrence of items in nested lists by index?
[英]How do I count the occurrence of a given string in list that has more nested lists/dictionaries?
在技术电话屏幕上,为我提供了类似于以下的列表,并要求计算字符串'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
你真的很亲密!
def count (x):
if isinstance (x, list):
return sum (count (y) for y in x)
elif isinstance (x, dict):
return sum (count ([ k, v ]) for k,v in x.items ())
elif x == "a":
return 1
else:
return 0
它像这样工作
count ('foo')
# 0
count ([ 'a', 'b', 'c' ])
# 1
count (['a', 'b', ['a', 'b', {'a': ['b', 'a', [{'b': ['a', 'b', {'a': 'a'}]}]]}]])
# 7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.