Python 打印列表中至少包含一个相同字符的项目
我想写一个函数,它可以打印列表中的项目,这些项目至少包含一个相似的字符,以及它在每个项目中出现的次数。 例如,如果我有以下列表:Python 打印列表中至少包含一个相同字符的项目,python,list,Python,List,我想写一个函数,它可以打印列表中的项目,这些项目至少包含一个相似的字符,以及它在每个项目中出现的次数。 例如,如果我有以下列表: ex = ['bat', 'cat', 'task', 'tank', 'tan'] 每个项目至少包含一次字母“a”和“t” 我知道我可以用 for string in ex: for letter in string: x = string.count("a") print(string,
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")
如果我想更改列表,如何在不指定要搜索的实际字符的情况下执行此操作?使用
字典
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)
输出
{'b': 1, 'a': 5, 't': 5, 'c': 1, 's': 1, 'k': 2, 'n': 2}
下面是一个简单的代码:)
如果使用[set(x)for x in ex]
将每个单词转换为一组字符,则可以使用返回所有单词共有的一组字符。然后,对于每个字母,您可以重复您的代码
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
library仅用于漂亮的打印)
在列表元素上加引号您可以省略.keys()
并使用d[element]+=1
而不是d[element]=d[element]+1
@asdf101谢谢您的提示!
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)
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)