2 回答

TA貢獻1995條經驗 獲得超2個贊
我建議像下面的代碼片段一樣遍歷名稱,并將所有現有的首字母縮寫保存在一個集合中:
all_names = [
'Risk Management',
'Scope Management',
'Stakeholder Management',
]
seen = set()
def find_initials(name, seen):
first, last = name.split()
for i in range(1, len(last)+1):
for j in range(1, len(first) + 1):
initials = first[:j] + last[:i]
if initials not in seen:
seen.add(initials)
return initials
# full name is found in seen!
for i in range(100):
initials = f'{first}{last}{i}'
if initials not in seen:
seen.add(initials)
return initials
initials = [find_initials(name, seen) for name in all_names]
print(initials) # ['RM', 'SM', 'StM']

TA貢獻1802條經驗 獲得超6個贊
我找到了另一個解決方案
unique = list()
def unique_initials(full_name):
name_list = full_name.split()
initials = ''
for name in name_list:
initials += name[0]
if initials not in unique:
unique.append(initials)
return initials
else:
initials = ''
i=0
for name in name_list:
if i==0:
initials += name[:2]
i +=1
else:
initials += name[0]
return initials
Skills['Initials'] = Skills['Name'].apply(lambda x: unique_initials(x))
添加回答
舉報