在python中如何在字典条件下执行字符串加字符串操作?
我的功能是在python中如何在字典条件下执行字符串加字符串操作?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我的功能是 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("
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
假设我创建了一个空的dict,然后我使用wDict[item]
为每个键赋值(这些键来自一个团队列表,我们有一个类似于b c d…的团队)。x[item.index(“”):item.index(“”+1)]
部分将在int方法运行后返回一个值。但是pythonshell返回了这个消息
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'
回溯(最近一次呼叫最后一次):
文件“C:\ProgramFiles(x86)\Wing IDE 101 4.1\src\debug\tserver\\u sandbox.py”,第66行,在
calResult中的文件“C:\Program Files(x86)\Wing IDE 101 4.1\src\debug\tserver\\u sandbox.py”,第59行
builtins.KeyError:“都灵”
我不明白我的代码中到底是什么错误。您不能第一次访问
wDict[item]
,因为您的dict是空的
这样就可以了:
wDict[item] = 1
但你不能这样做:
wDict[item] = wDict[item] + 1
也许您想使用以下语法:
wDict[item] = int(wDict.get(item, 0)]) + int(x[item.index(" "):item.index(" ") + 1])
您不能第一次访问
wDict[item]
,因为您的dict是空的
这样就可以了:
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])
您试图访问密钥项的“值”,但没有初始化任何密钥-值对。看起来您试图在同一赋值语句中使用wDict[item]作为右值和左值,而wDict[item]尚未初始化
wDict[item]=int(wDict[item])+int(x[item.index(" "):item.index(" ")+1])
您正在尝试访问键项的“值”,但没有初始化键值对。我不太确定您在这里尝试做什么(首先,考虑使用比
x
更具描述性的变量名),但问题是:
wDict[item]=int(wDict[item])+int(x[item.index(" "):item.index(" ")+1])
wDict[item]=int(wDict[item])+...
第一次执行此操作时,wDict[item]
不存在,因此出现KeyError
我想你想要的是:
wDict[item] = wDict.get(item, 0) + int(x[item.index(" "):item.index(" ")+1])
.get()
接受一个键,如果该键不存在,则使用默认值
您可能还想在
集合中使用计数器
类,它被设计为在这种情况下将不存在的键默认为零。我不太确定您在这里要做什么(首先考虑使用比x
更具描述性的变量名),但问题是:
wDict[item]=int(wDict[item])+...
第一次执行此操作时,wDict[item]
不存在,因此出现KeyError
我想你想要的是:
wDict[item] = wDict.get(item, 0) + int(x[item.index(" "):item.index(" ")+1])
.get()
接受一个键,如果该键不存在,则使用默认值
您可能还想使用集合
中的计数器
类,该类的设计目的是将不存在的键默认为零,以适应这种情况