1

リストの順序付けに助けが必要です:

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()

あなたがそこからどこへ行くのか私にはわかりません。私はパイソンが苦手です。ありがとう。

4

2 に答える 2

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:]))
于 2013-10-12T16:19:25.750 に答える