我怎样才能干净地组合同一个字符串的多个前缀?
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])
虽然不确定它会有什么好处...
例如,如果我的字符串是
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])
虽然不确定它会有什么好处...