Python:减少列表但保留详细信息

Fla*_*hDD 2 python reduce list

说我有一个项目列表,其中一些项目类似于一个点,但后来一个点后的数字不同

['abc.1',
 'abc.2',
 'abc.3',
 'abc.7',
 'xyz.1',
 'xyz.3',
 'xyz.11',
 'ghj.1',
 'thj.1']
Run Code Online (Sandbox Code Playgroud)

我想从这个列表中产生一个新的列表,它会折叠倍数但保留一些数据,即数字后缀,所以上面的列表应该产生一个新的列表

[('abc',('1','2','3','7'))
 ('xyz',('1','3','11'))
 ('ghj',('1'))
 ('thj',('1'))]
Run Code Online (Sandbox Code Playgroud)

我所想的是,第一个列表可以通过点分成对,但后来如何将第一部分分组而不丢失第二部分

如果这个问题是noobish,我很抱歉,并提前感谢

...哇,我没想到这么多很棒的答案,谢谢

XOR*_*ist 5

from collections import defaultdict

d = defaultdict(list)

for el in elements:
    key, nr = el.split(".")
    d[key].append(nr)

#revert dict to list
newlist = d.items()
Run Code Online (Sandbox Code Playgroud)