我怎样才能干净地组合同一个字符串的多个前缀?

How can I cleanly combine a number of prefixes of the same string?

例如,如果我的字符串是

lst= [44,44 , 44]

我的前缀长度是

lens = [2, 2, 2]


   for k,v in zip(key,value):
         #dic[k] = v
         dic[k].append(v)

我用 defaultdict 做了这个

od = collections.OrderedDict(sorted(dic.items(),reverse=True))
od-> OrderedDict([('44', [2,2,2])])

我想遍历 [2,2,2] 并创建一个等同于

的字符串
'44'[:2] + '44'[:2] + '44'[:2] 

并以单个字符串结束,例如 '444444'

对于您的原始示例(看起来有点过于复杂):

import collections

x = collections.OrderedDict([('4444', [1, 1, 1, 1, 2])])
print(''.join([k[:v] for k, vs in x.items() for v in vs]))

解释:

  • ''.join(<some list here>) 接受一个列表并将其元素连接到一个由给定字符串分隔的字符串中。
  • [k[:v] for k, vs in x.items() for v in vs] 是一个列表理解,从字典的项目中获取每个键 k 和值 vs (在您的情况下是一个列表),然后获取每个该列表中的值 v,并按顺序将每个组合的 k[:v] 添加到列表中。

一般来说,如果您有一个列表和一个字符串,并且您想根据列表中的长度创建该字符串前缀的串联:

s = '12345'
ls = [1, 1, 2, 1, 3]
result = ''.join([s[:l] for l in ls])

虽然不确定它会有什么好处...