在Python中遍历列表和匹配

时间:2019-10-02 17:11:29

标签: python match

我有一个带有字符串值的列表:

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)

这是我迷路的地方。请帮忙。

3 个答案:

答案 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}