[英]Print items in a list which all contain at least one same character
我想寫一個 function 打印列表中的項目,這些項目都包含至少一個相似的字符以及它在每個項目中出現的次數。 例如,如果我有以下列表:
ex = ['bat', 'cat', 'task', 'tank', 'tan']
每個項目至少包含一次字母“a”和“t”。
我知道我可以使用
for string in ex:
for letter in string:
x = string.count("a")
print(string, "has", x, "a")
for string in ex:
for letter in string:
x = string.count("t")
print(word, "has", x, "t")
如果我想更改列表,我將如何在不指定要搜索的實際字符的情況下執行此操作?
使用dictionary
example = ['bat', 'cat', 'task', 'tank', 'tan']
d = {}
for val in example:
for element in val:
if element in d.keys():
d[element] = d[element] + 1
else:
d[element] = 1
print(d)
output
{'b': 1, 'a': 5, 't': 5, 'c': 1, 's': 1, 'k': 2, 'n': 2}
這是一個簡單的代碼:)
from functools import reduce
ex = ["bat", "cat", "task", "tank", "tan"]
reduce(lambda a,b: a.intersection(b) ,[set(e) for e in ex])
如果使用[set(x) for x in ex]
將每個單詞轉換為一組字符,則可以使用set.intersection()
返回一組所有單詞共有的字符。 然后對於每個字母,您可以重復您的代碼。
ex = ['bat', 'cat', 'task', 'tank', 'tan']
common_letters = set.intersection(*[set(x) for x in ex])
for letter in common_letters:
for string in ex:
x = string.count(letter)
print(string, "has", x, letter)
你可以這樣做( json
庫僅用於漂亮的打印)
import json
arr = ['bat', 'cat', 'task', 'tank', 'tan']
letters = set(''.join(arr))
d = {}
for letter in letters:
d[letter] = {'words' : [], 'counts' : []}
for letter in letters:
for word in arr:
if letter in word:
d[letter]['words'].append(word)
d[letter]['counts'].append(word.count(letter))
pretty = json.dumps(d, indent=4)
print(pretty)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.