簡體   English   中英

遍歷 Python 中的列表和匹配

[英]Iterate Over List and Match in Python

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

iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']

我正在努力做到這一點,所以我迭代了它壓縮它的列表中的字符串。 我預期的 output 是:

['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)

這就是我迷路的地方。 請幫忙。

我不確定這是否是您想要的,但如果您希望只是計算每個字符串出現的次數,這可能是一個解決方案:

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 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

我相信您的目標是計算每個值存在多少次:

這應該工作:


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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM