我正在嘗試改進下面的代碼段。我嘗試了一些修改,但它無法創建想要的輸出。需要修改哪部分才能得到我想要的輸出?提前致謝。
from collections import defaultdict
data=defaultdict(int)
num = 0
with open("Samplefile.txt", encoding='utf8', errors='ignore') as f:
for line in f:
grp, pname, cnt, cat = line.split(maxsplit=3)
data[(pname.strip(),cat.replace('\n','').strip(),grp)] =int(cnt)
sorteddata = sorted([[k[0],v,k[2]] for k,v in data.items()], key=lambda x:x[1], reverse=True)
for subl in sorteddata[:10]:
num = 1
line = " ".join(map(str, subl))
print ("{:>5} -> {:<5}".format(str(num), line))
示例檔案.txt
113 b6320070eb6998e64d2d6573fc 4 Yorkie (YORK)
2,887 0953f9e6608d6604e4676ac5b7 3 Fins LPs (FINS-L...)
122 74c33cff9ff98f3a9b62fcbff5 3 Fins Token (FINS)
128 f9fa0a842465d9a2f5f9fd1423 2 Numbers One (NUM)
1,272 4230cbfda057d8ec2c48abe2a2 2 USDC (anyUSD...)
當前輸出:#
1 -> b6320070eb6998e64d2d6573fc 4 113
2 -> 0953f9e6608d6604e4676ac5b7 3 2,887
3 -> 74c33cff9ff98f3a9b62fcbff5 3 122
4 -> f9fa0a842465d9a2f5f9fd1423 2 128
5 -> 4230cbfda057d8ec2c48abe2a2 2 1,272
想要的輸出:
1 -> 113 b6320070eb6998e64d2d6573fc 4 Yorkie (YORK)
2 -> 2,887 0953f9e6608d6604e4676ac5b7 3 Fins LPs (FINS-L...)
3 -> 122 74c33cff9ff98f3a9b62fcbff5 3 Fins Token (FINS)
4 -> 128 f9fa0a842465d9a2f5f9fd1423 2 Numbers One (NUM)
5 -> 1,272 4230cbfda057d8ec2c48abe2a2 2 USDC (anyUSD...)
uj5u.com熱心網友回復:
您的sortedData串列,重新組織了鍵和值的內容。您必須在列印格式中考慮到這一點:
for num,(k0,v,k2) in enumerate(sorteddata[:10],1):
print(f"{num:5} -> {k2:>5} {k0} {v}")
盡管如此,這不會列印最后一部分(例如“Yorkie (YORK)”),因為您已將其從排序串列中完全洗掉,因此無法在 sortedData 中訪問它(您需要將其保留在那里才能列印)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/379983.html
上一篇:修復這個錯誤的賓果排序實作
