我需要帮助订购清单:
Tom,M,1658
Anthony,M,985
Lisa,F,8976
Ben,M,698
Shelly,F,8975
所以我需要帮助将订单从F到M排序,然后将最小数字排序到最大数字。输出应如下所示:
Shelly,F,8975
Lisa,F,8976
Ben,M,698
Anthony,M,985
Tom,M,1658
所以基本上,女性首先是最小到最大的数字,然后是男性,然后是最小到最大。 M =男性,f =女性。
这是我到目前为止所做的:
class names():
pass
#__slot__ == ('No', 'Name', 'Gender', 'Occurrences')
def mkEntry(textFileName):
for currentFile in textFileName:
print(currentFile.strip())
def main():
openFile = 'yob' + input("Enter the year <Do NOT include 'yob' or .'txt' : ") + '.txt'
textFileName = open(openFile)
mkEntry(textFileName)
main()
我不知道你从哪里去。我在python上很糟糕。 感谢。
答案 0 :(得分:0)
所以基本上你只需要在元组的0索引处跳过元素,'F'在'M'之前,简单的排序将完成这项工作:
sorted(a, key=lambda x: (x[1:]))
# [
# ('Shelly', 'F', 8975),
# ('Lisa', 'F', 8976),
# ('Ben', 'M', 698),
# ('Anthony', 'M', 985),
# ('Tom', 'M', 1658)
#]
或者,如果您需要就地排序:
a.sort(key=lambda x: (x[1:]))
答案 1 :(得分:0)
按秒(F / M)和第三(698,985,1558 ......)属性排序。
import operator
lst = [
('Lisa', 'F', 8976),
('Shelly', 'F', 8975),
('Tom', 'M', 1658),
('Anthony', 'M', 985),
('Ben', 'M', 698)]
]
sorted(lst, key=operator.itemgetter(1, 2))