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