排序Python列表
我的代码排序有问题排序Python列表,python,Python,我的代码排序有问题 def generateList(attendeeList, criteria, workshoptitle): for i in attendeeList: if(criteria == 'Workshop1'): criteria = 'Workshop B' if(i['session1'] == criteria ): temp = [] temp.append((
def generateList(attendeeList, criteria, workshoptitle):
for i in attendeeList:
if(criteria == 'Workshop1'):
criteria = 'Workshop B'
if(i['session1'] == criteria ):
temp = []
temp.append((i['lastname']))
temp.sort()
print(temp)
输出不按姓氏排序
['Smith']
['Robertson']
['Lovelace']
['Yu']
每次通过循环时,您只是打印一个列表,其中包含一个项目
temp = [] # empty list
temp.append((i['lastname'])) # list with one element
temp.sort() # list is already sorted (since it just has one element)
print(temp)
也许你想要这样的东西:
def generateList(attendeeList, criteria, workshoptitle):
lastnames = []
for i in attendeeList:
if(criteria == 'Workshop1'):
criteria = 'Workshop B'
if(i['session1'] == criteria ):
lastnames.append(i['lastname'])
lastnames.sort()
print(lastnames)
编辑
更惯用的Python,并返回列表而不是打印列表:
def generate_list(attendee_list, criteria, workshop_title):
if criteria == 'Workshop1':
criteria = 'Workshop B'
return sorted(attendee['lastname'] for attendee in attendee_list
if attendee['session1'] == criteria)
每次通过循环时,您只是打印一个列表,其中包含一个项目
temp = [] # empty list
temp.append((i['lastname'])) # list with one element
temp.sort() # list is already sorted (since it just has one element)
print(temp)
也许你想要这样的东西:
def generateList(attendeeList, criteria, workshoptitle):
lastnames = []
for i in attendeeList:
if(criteria == 'Workshop1'):
criteria = 'Workshop B'
if(i['session1'] == criteria ):
lastnames.append(i['lastname'])
lastnames.sort()
print(lastnames)
编辑
更惯用的Python,并返回列表而不是打印列表:
def generate_list(attendee_list, criteria, workshop_title):
if criteria == 'Workshop1':
criteria = 'Workshop B'
return sorted(attendee['lastname'] for attendee in attendee_list
if attendee['session1'] == criteria)
你的代码没有达到你的目的。即使在每次获得项目时都打印该项目,也会在每次迭代时生成一个空列表 要在循环之前,在函数体中创建列表,然后附加到它,然后对它进行排序,如果要另外打印它,则要遍历它:
def generateList(attendeeList, criteria, workshoptitle):
temp = []
if criteria == 'Workshop1':
criteria = 'Workshop B'
for i in attendeeList:
if i['session1'] == criteria :
temp.append(i['lastname'])
temp.sort()
for item in temp:
print(item)
return temp
在IPython中运行的示例:
In [7]: generateList([dict(session1="Workshop B",lastname="test1"), dict(session1="Workshop A", lastname="test2"), dict(session1="Workshop B", lastname="test3")], "Workshop1", ...)
test1
test3
Out[7]: ['test1', 'test3']
你的代码没有达到你的目的。即使在每次获得项目时都打印该项目,也会在每次迭代时生成一个空列表 要在循环之前,在函数体中创建列表,然后附加到它,然后对它进行排序,如果要另外打印它,则要遍历它:
def generateList(attendeeList, criteria, workshoptitle):
temp = []
if criteria == 'Workshop1':
criteria = 'Workshop B'
for i in attendeeList:
if i['session1'] == criteria :
temp.append(i['lastname'])
temp.sort()
for item in temp:
print(item)
return temp
在IPython中运行的示例:
In [7]: generateList([dict(session1="Workshop B",lastname="test1"), dict(session1="Workshop A", lastname="test2"), dict(session1="Workshop B", lastname="test3")], "Workshop1", ...)
test1
test3
Out[7]: ['test1', 'test3']
哦,那是因为我的临时工在循环中吗?所以它每次都在重新创建变量,并在其中放置一个变量,然后重复?@MuthaCluffer是的exactly@MuthaCluffer是的,你每次都给
temp
分配一个新的空列表。手掌到额头,doh!非常感谢你!哦,那是因为我的临时工在循环中吗?所以它每次都在重新创建变量,并在其中放置一个变量,然后重复?@MuthaCluffer是的exactly@MuthaCluffer是的,你每次都给temp
分配一个新的空列表。手掌到额头,doh!非常感谢你!