Python 如何用';x';?

Python 如何用';x';?,python,string,pattern-matching,Python,String,Pattern Matching,我有一个字符串计数字典:{“abcd12efgh”:1,“abcd23efgh”:1,“abcd567efgh”:1,“abcdkljefgh”:1,“dog”:1,“cat”:1} 我需要将相似的字符串组合在一起,并聚合计数,得到如下结果:{“abcdxxxefgh”:4,“dog”:1,“cat”:1}。 在Python中实现这一点最优雅的方法是什么?答案取决于假设两个键如何匹配,但是您可以使用单独的函数来决定。我已经写了一个可能是你正在寻找的:检查键是否有特定的前缀和后缀。您可以添加更多约

我有一个字符串计数字典:
{“abcd12efgh”:1,“abcd23efgh”:1,“abcd567efgh”:1,“abcdkljefgh”:1,“dog”:1,“cat”:1}

我需要将相似的字符串组合在一起,并聚合计数,得到如下结果:
{“abcdxxxefgh”:4,“dog”:1,“cat”:1}。


在Python中实现这一点最优雅的方法是什么?

答案取决于假设两个键如何匹配,但是您可以使用单独的函数来决定。我已经写了一个可能是你正在寻找的:检查键是否有特定的前缀和后缀。您可以添加更多约束,例如,中间的子字符串具有一定的长度或其他模式

def transform(key):
    prefix, suffix = 'abcd', 'efgh'
    transformed = key
    if key.startswith(prefix) and key.endswith(suffix):
        transformed = prefix + 'X' + suffix
    return transformed

new_d = {}
for k in d:
    new_d[transform(k)] = new_d.get(transform(k), 0) + d[k]

#{'abcdXefgh': 4, 'cat': 1, 'dog': 1}

这实际上取决于你如何决定将单词分类为足够相似的类别。你现在怎么做对我来说毫无意义。在这种分组方法中,“dog”==“dig”==“dig”会吗?我想你应该先考虑一下如何做,然后再考虑如何优雅地做。@Vikas,我想人们会对这个问题投反对票,因为堆栈溢出是为了问更具体的问题。这似乎是一种摆脱为自己编写代码的方式。你的答案在文档中