簡體   English   中英

對列表中的所有元素應用特定更改 ( Python )

[英]Applying a certain change to all elements in a list ( Python )

我正在為模擬游戲開發人類統計數據庫,但無法確定某個 function。 每個人的數據以字符串形式存儲在humandict列表中。 每個游戲年份都應該調用ageup()函數,並更改每個字符串的數據值。

這是我使用的字符串數據格式(列表由這些值組成,這些值存儲有關每個人的數據):

##ID, age, strengths, smarts

我調用.split()方法是為了將字符串中的這些不同數字划分為一個列表,並將int()應用於每個列表項以便在數學中使用它們。 ageup() function 應該訪問每個humandict項目並將年齡值更改為 1。這是我目前使用的代碼(不能按預期工作):

    for unit in humandict:
        human = unit.split()
        age = int(human[1])
        age += 1
        replace = (str(human[0])+" "+str(age)+" "+str(human[2])+" "+str(human[3]))
        humandict[int(human[0])] = replace
    print(humandict)

代碼成功運行一次,下次調用 function 時出現以下錯誤:

File "main.py", line 15, in ageup
    human = unit.split()
AttributeError: 'NoneType' object has no attribute 'split'

我根本不明白問題出在哪里,可能是由於錯誤的 ID 分配或其他原因。 但我確信在這里使用字典是一種更好、更有效的數據處理方式。

所以這里是你如何用字典實現相同的東西:

human_list_of_dict = [{'ID':<int>, 'age':<int>, 'strengths':<str>, 'smarts':<str>}]

上面寫的是一個存儲數據的字典列表,它現在只有一個字典,但可以有你需要的字典。 然后你可以簡單地把它稱為一個只有很少變化的列表。

for unit in human_list_of_dict:
    unit['age'] = unit['age']+1

通過這種方式,您可以省去將字符串轉換為列表的麻煩,反之亦然。 這種方式代碼也很有效(因為數據操作較少)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM