按组python连接字符串

bra*_*adj 3 python string group-by string-concatenation

我想将一个字符串列表连接成一个按列表中的值分组的新字符串.这是我的意思的一个例子:

输入

key = ['1','2','2','3']
data = ['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

结果

newkey = ['1','2','3']
newdata = ['a','b c','d']
Run Code Online (Sandbox Code Playgroud)

我理解如何加入文字.但我不知道如何正确迭代列表的值以聚合相同键值共有的字符串.

任何帮助或建议表示赞赏.谢谢.

def*_*fuz 9

from collections import defaultdict

d = defaultdict(list)

for k, v in zip(key, data):
    d[k].append(v)

print [(k, ' '.join(v)) for k, v in d.items()]
Run Code Online (Sandbox Code Playgroud)

输出:

[('1', 'a'), ('3', 'd'), ('2', 'b c')]
Run Code Online (Sandbox Code Playgroud)

以及如何获得新列表:

newkey, newvalue = d.keys(), [' '.join(v) for v in d.values()]
Run Code Online (Sandbox Code Playgroud)

并保存订单:

newkey, newvalue = zip(*[(k, ' '.join(d.pop(k))) for k in key if k in d])
Run Code Online (Sandbox Code Playgroud)

  • 你如何从输出到所需的输出? (4认同)
  • 这比`groupby`更好,因为它不需要对`keys`进行排序. (2认同)