Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印列表中至少包含一个相同字符的项目_Python_List - Fatal编程技术网

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)