我有一个带有字符串值的列表:
iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']
我试图做到这一点,所以我遍历列表中的字符串以压缩它。我的预期输出是:
['Ok', 'Hi'*4, 'He', 'Hy'*3, 'Hl', 'Gb']
我的代码是:
ix = []
iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']
iwy = list(enumerate(iwx))
for i,x in iwy:
n = 0
n += 1
tz = [iwy[x:i+11] for x in range(0, len(x))]
print(tz)
这是我迷路的地方。请帮忙。
答案 0 :(得分:1)
我不确定这是否是您想要的,但是如果您希望只是计算每个字符串出现的次数,则可能是一种解决方案:
from collections import Counter
[(i,j) for i,j in zip(Counter(iwx).keys(), Counter(iwx).values())]
请注意,如果您想改用字典(为方便起见),请使用:
dic_name = dict([(i,j) for i,j in zip(Counter(iwx).keys(), Counter(iwx).values())])
答案 1 :(得分:0)
正如评论所暗示的,我发现很难理解某些行的预期结果和用法。以下是可以帮助您以其他方式实现结果的代码。
iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']
d = {}
# Creating a dictionary to maintain uniqueness of the strings as keys
# And maintain the count of occurrence as values
for i in iwx:
if i in d:
d[i] += 1
else:
d[i] = 1
print(d)
# d = {'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}
如果需要保留列表中字符串的顺序,则可以使用OrderedDict
。
答案 2 :(得分:0)
我相信您的目标是计算每个值存在多少次:
这应该有效:
ix = []
iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']
occurences = {}
for i in range(0, len(iwx)):
if iwx[i] not in occurences:
occurences[iwx[i]] = 1
else:
occurences[iwx[i]] += 1
print(occurences)
结果是:
{'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}