python - 如何识别字典中的匹配值并仅使用这些键创建一个新字符串?

标签 python python-3.x string dictionary counter

我有一种方法,可以从字符串中提取重复的字母,并将它们添加到字典中,并将它们重复的次数作为值。现在我想做的是提取所有具有匹配值的键,并创建一个仅包含这些键的字符串。

示例:

text = "theerrrdd"
count = {}
same_value = ""

for ch in text:
    if text.count(ch) > 1:
        count[ch] = text.count(ch)

如何检查具有匹配值的键的计数,如果找到,请将这些键添加到 Same_value?

所以在这个例子中“e”和“d”的值都是2。我想将它们添加到same_value,这样当调用时,same_value将返回“ed”。 我基本上只是想能够识别哪些字母重复了相同的时间。

最佳答案

首先创建一个字母计数映射,然后反转该映射。使用集合模块:

from collections import defaultdict, Counter

text = 'theerrrdd'

# create dictionary mapping letter to count
letter_count = Counter(text)

# reverse mapping to give count to letters mapping
count_letters = defaultdict(list)
for letter, count in letter_count.items():
    count_letters[count].append(letter)

结果:

print(count_letters)

defaultdict(<class 'list'>, {1: ['t', 'h'],
                             2: ['e', 'd'],
                             3: ['r']})

然后,例如,count_letters[2] 为您提供在输入字符串中出现两次的所有字母。

在循环中使用 str.count 效率很低,因为它需要对字符串的每个字母进行完整迭代。。换句话说,这样的算法具有二次复杂度,而collections.Counter具有线性复杂度。

关于python - 如何识别字典中的匹配值并仅使用这些键创建一个新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971928/

相关文章:

python - Pandas 索引困惑

python - 用于约束参数的卡方检验

python - 在 matplotlib 中 show() 之后保留无花果的内容?

java - 如何创建字符串的所有元音组合并将每个组合添加到 ArrayList

python - 如何将多个条件传递给 python peewee 的 join 参数?

python - dateutil.parser : how to deal with dd/mm and mm/dd in same column?

python - Django - 创建两种用户类型,其中一种类型可以是两种类型

python - 使用 Pillow 将 png 转换为 jpeg

c# - 如果存在超过 37 个字符,如何将字符串拆分为多行

java - 拆分和解析公式字符串