所以我的任務是從這樣的 csv 檔案串列中找到最受歡迎的出價
1,8dac2b,ewmzr,jewelry,phone0,9759243157894736,us,69.166.231.58,vasstdc27m7nks3
2,668d39,aeqok,furniture,phone1,9759243157894736,jp,50.201.125.84,jmqlhflrzwuay9c
3,622r49,arqek,vehicle,phone2,9759544365415694736,az,53.001.135.54,weqlhrerreuert6f
4,6444t43,rrdwk,vehicle,phone9,9759543263245434353,au,54.241.234.64,weqqyqtqwrtert6f
我必須確定最受歡迎的出價,它出現在 csv 檔案中的每 4 個元素中......
所以我要尋找的是那些周圍有 (** **) 的東西,如下面的同一個例子所示
1,8dac2b,ewmzr,**jewelry**,phone0,9759243157894736,us,69.166.231.58,vasstdc27m7nks3
2,668d39,aeqok,**furniture**,phone1,9759243157894736,jp,50.201.125.84,jmqlhflrzwuay9c
3,622r49,arqek,**vehicle**,phone2,9759544365415694736,az,53.001.135.54,weqlhrerreuert6f
4,6444t43,rrdwk,**vehicle**,phone9,9759543263245434353,au,54.241.234.64,weqqyqtqwrtert6f
所以從我的例子來看,輸出應該是 vehicle
看看我之前的問題,在這里我問了同樣的問題: 如何回傳給定 csv 串列中重復出現次數最多的值?
現在在一位 StackOverflow 用戶https://stackoverflow.com/users/5387738/nikita-almakov的幫助下,我能夠得到這個代碼......
import csv
value_to_count = {}
with open("tmp.csv", "r") as f:
reader = csv.reader(f)
for row in reader:
category = row[3]
if category in value_to_count:
value_to_count[category] = 1
else:
value_to_count[category] = 1
count_to_value = sorted((v, k) for k, v in value_to_count.items())
但是,當我嘗試將此代碼放在 function 下時popvote(filename),我遇到了一個問題,即我不知道將filename代碼包含在何處以獲得正確的輸出。
這是我到目前為止所擁有的:
import csv
def popvote(filename):
value_to_count = {}
with open("tmp.csv", "r") as f:
reader = csv.reader(f)
for row in reader:
category = row[3]
if category in value_to_count:
value_to_count[category] = 1
else:
value_to_count[category] = 1
count_to_value = sorted((v, k) for k, v in value_to_count.items())
return count_to_value
但是,正如預期的那樣,輸出沒有正確列印。我知道我沒有filename在函式中實作,原因是我不知道在哪里這樣做,有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
改變
with open("tmp.csv", "r") as f:
到
with open(filename, "r") as f:
uj5u.com熱心網友回復:
如果檔案filenameIST與價值觀的CSV檔案上面,那么你應該更換"tmp.csv"使用filename。然后這個函式應該回傳一個最流行的出價在前面的元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375887.html
下一篇:雙回圈串列理解
