在 Python 中迭代列表和匹配

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


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)

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


梵蒂冈之花
浏览 116回答 3
3回答

慕娘9325324

我不确定这是否是您想要的,但如果您希望只是计算每个字符串出现的次数,这可能是一个解决方案: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())])

杨魅力

正如评论所暗示的那样,我发现很难理解某些行的预期结果和用法。下面是可以帮助您以不同方式实现结果的代码。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 valuesfor i in iwx:    if i in d:        d[i] += 1    else:        d[i] = 1print(d)# d = {'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}OrderedDict如果需要保留列表中字符串的顺序,您可以使用。

哆啦的时光机

我相信您的目标是计算每个值存在多少次:这应该工作: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]] += 1print(occurences)结果是:{'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python