按照列表中出現的唯一元素來標記列表

PHPz
發布: 2024-02-08 20:57:04
轉載
502 人瀏覽過

按照列表中出現的唯一元素來標記列表

問題內容

給定字串列表,例如:

foo = \['a', 'a', 'b', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a'\]
登入後複製

我們如何標記它們以使輸出為:

output = \['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b2', 'c3', 'a5'\]
登入後複製

(保持原始列表順序)

在以下情況下,只有 3 個唯一變數需要查看,因此我首先想到的是查看唯一元素:

import numpy as np

np.unique(foo)

Output = \['A', 'B', 'C'\]
登入後複製

但是當我試圖找到合適的循環來達到所需的輸出時,我就會陷入困境。


正確答案


使用純python,利用字典來計算值:

foo = ['a', 'a', 'b', 'a', 'b', 'c', 'c', 'a', 'b', 'c', 'a']

d = {}
out = []
for val in foo:
    d[val] = d.get(val, 0)+1
    out.append(f'{val}{d[val]}')
登入後複製

如果您可以使用

import pandas as pd

s = pd.Series(foo)
out = s.add(s.groupby(s).cumcount().add(1).astype(str)).tolist()
登入後複製

輸出:['a1', 'a2', 'b1', 'a3', 'b2', 'c1', 'c2', 'a4', 'b3', 'c3', ' a5' ]

以上是按照列表中出現的唯一元素來標記列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板