题目描述
Format a string of names like ‘Bart, Lisa & Maggie’
Given: an array containing hashes of names
Return: a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.
示例
namelist([ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ])
# returns 'Bart, Lisa & Maggie'
namelist([ {'name': 'Bart'}, {'name': 'Lisa'} ])
# returns 'Bart & Lisa'
namelist([ {'name': 'Bart'} ])
# returns 'Bart'
namelist([])
# returns ''
#Note: all the hashes are pre-validated and will only contain A-Z, a-z, ‘-‘ and ‘.’.
解决方案
solution1
def namelist(names):
str = ''
if len(names) != 0:
arr = []
for i in range(0, len(names) - 1):
arr.append(names[i]['name'])
str = ', '.join(arr)
str += ' & ' + names[-1]['name'] if str != '' else names[-1]['name']
return str
solution2
def namelist(names):
if len(names) > 1:
return '{} & {}'.format(', '.join(name['name'] for name in names[:-1]),
names[-1]['name'])
elif names:
return names[0]['name']
else:
return ''
solution3
def namelist(names):
return ", ".join([name["name"] for name in names])[::-1].replace(",", "& ",1)[::-1]
solution4
def namelist(names):
if len(names)==0: return ''
if len(names)==1: return names[0]['name']
return ', '.join([n['name'] for n in names[:-1]]) + ' & ' + names[-1]['name']