簡體   English   中英

如何在python的Dictionary條件中執行字符串加字符串操作?

[英]How to do a string plus string operation in Dictionary condition in python?

我的功能就像

def calResult(w,t,l,team):
    wDict={}
    for item in team:
        for x in w:
            wDict[item]=int(wDict[item])+int(x[item.index(" "):item.index(" ")+1])
        for x in t:
            wDict[item]=int(wDict[item])+int(x[item.index(" "):item.index(" ")+1])
    return wDict

說我創建一個空字典,然后使用wDict[item]為每個鍵分配值(這些是從團隊列表中獲得的,我們有像abc d這樣的團隊...)。 運行int方法后, x[item.index(" "):item.index(" ")+1]部分將返回一個值。 但是python shell返回了

Traceback (most recent call last):
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 66, in <module>
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 59, in calResult
builtins.KeyError: 'Torino'

我無法理解代碼中的錯誤到底是什么。

我不太確定您要在這里做什么(對於初學者,請考慮使用比x更具描述性的變量名),但這是問題所在:

wDict[item]=int(wDict[item])+...

第一次執行此操作時, wDict[item]不存在,因此出現KeyError

我想您想要的是:

wDict[item] = wDict.get(item, 0) + int(x[item.index(" "):item.index(" ")+1])

.get()需要一個密鑰和一個默認值(如果該密鑰不存在)。

您可能還希望在collections使用Counter類,該類旨在將不存在的鍵默認為零。

您的字典為空,因此您第一次無法訪問wDict[item]

可以的:

wDict[item] = 1

但是您不能這樣做:

wDict[item] = wDict[item] + 1

也許您想使用以下語法:

wDict[item] = int(wDict.get(item, 0)]) + int(x[item.index(" "):item.index(" ") + 1])

似乎您正在嘗試在尚未初始化wDict [item]的情況下,在同一賦值語句中將wDict [item]用作右值和左值。

wDict[item]=int(wDict[item])+int(x[item.index(" "):item.index(" ")+1])

您正在嘗試訪問鍵項目的“值”,但是沒有初始化鍵值對。

暫無
暫無

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

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