[英]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.