[英]Key Error Running Python Script (Using Atom)
I have never used python before.我以前从未使用过 python。 I'm following a short guide on how to use an API with Python .
我正在关注如何使用 API 和 Python 的简短指南。 I'm using Atom text editor plus the Hydrogen module to run said code.
我正在使用 Atom 文本编辑器和Hydrogen 模块来运行所述代码。
I am getting KeyError: '203' when I run the following segment.当我运行以下段时,我得到 KeyError: '203'。
champ_dict = {}
for key in static_champ_list['data']:
row = static_champ_list['data'][key]
champ_dict[row['key']] = row['id']
for row in participants:
print(str(row['champion']) + ' ' + champ_dict[str(row['champion'])])
row['championName'] = champ_dict[str(row['champion'])]
# print dataframe
df = pd.DataFrame(participants)
df
the error occurs on the following line错误发生在以下行
print(str(row['champion']) + ' ' + champ_dict[str(row['champion'])])
I get that it's lookup error but I'm lost as how to resolve it.我知道这是查找错误,但我不知道如何解决它。
Here is the full version of my code这是我的代码的完整版本
#Test Script for interacting with
#RIOT API
#Built from 'Towards Data Science' guide
#If you want to use Hydrogen, install
#the Hydrogen Package and run
# python3 -m pip install ipykernel
# python3 -m ipykernel install --user
#This might allow pandas, idk
#-------------------------------------------
#Get installed module for Python
import riotwatcher
#Import tools.
from riotwatcher import LolWatcher, ApiError
#Import pandas
import pandas as pd
# Global variables
# Get new API from
# https://developer.riotgames.com/
api_key = 'RGAPI-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXX'
watcher = LolWatcher(api_key)
my_region = 'euw1'
#Use 'watcher' to get basic stats
me = watcher.summoner.by_name(my_region, 'RGE lnspired')
print(me)
#Use 'watcher' to get ranked ranked stats
my_ranked_stats = watcher.league.by_summoner(my_region, me['id'])
print(my_ranked_stats)
# Setup retrieval of match info
my_matches = watcher.match.matchlist_by_account(my_region, me['accountId'])
# Fetch info about last match
last_match = my_matches['matches'][0]
match_detail = watcher.match.by_id(my_region, last_match['gameId'])
#Setup Data Frame to view some of this stuff
participants = []
for row in match_detail['participants']:
participants_row = {}
participants_row['champion'] = row['championId']
participants_row['spell1'] = row['spell1Id']
participants_row['spell2'] = row['spell2Id']
participants_row['win'] = row['stats']['win']
participants_row['kills'] = row['stats']['kills']
participants_row['deaths'] = row['stats']['deaths']
participants_row['assists'] = row['stats']['assists']
participants_row['totalDamageDealt'] = row['stats']['totalDamageDealt']
participants_row['goldEarned'] = row['stats']['goldEarned']
participants_row['champLevel'] = row['stats']['champLevel']
participants_row['totalMinionsKilled'] = row['stats']['totalMinionsKilled']
participants_row['item0'] = row['stats']['item0']
participants_row['item1'] = row['stats']['item1']
participants.append(participants_row)
df = pd.DataFrame(participants)
df
#So now we can look at what is referred
#to as 'Static Data'
# check league's latest version
latest = watcher.data_dragon.versions_for_region(my_region)['n']['champion']
# Lets get some champions static information
static_champ_list = watcher.data_dragon.champions(latest, False, 'en_US')
# champ static list data to dict for looking up
champ_dict = {}
for key in static_champ_list['data']:
row = static_champ_list['data'][key]
champ_dict[row['key']] = row['id']
for row in participants:
print(str(row['champion']) + ' ' + champ_dict[str(row['champion'])])
row['championName'] = champ_dict[str(row['champion'])]
# print dataframe
df = pd.DataFrame(participants)
df
In order to retrieve a value from a standard dictionary in python with a key, it must be a valid or else a KeyError
will be raised.为了使用键从 python 中的标准字典中检索值,它必须是有效的,否则将引发
KeyError
。 So your code is attempting to use the key '203'
with the dictionary champ_dict
, however '203'
is not a valid key (hence the KeyError
).因此,您的代码试图将键
'203'
与字典champ_dict
使用,但是'203'
不是有效键(因此是KeyError
)。 To see which keys are currently present in the dict, you can call the dict.keys
method on champ_dict
.要查看字典中当前存在哪些键,可以调用
champ_dict
上的dict.keys
方法。 Example would be something like示例将类似于
>>> champ_dict = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
>>> champ_dict.keys()
dict_keys(['key1', 'key2', 'key3'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.