标签: keyerror

Python:"除了KeyError"比"如果键入dict"更快?

编辑2:有人建议这是一个类似问题的副本.我不同意,因为我的问题集中在速度,而另一个问题是什么更"可读"或"更好"(没有更好地定义).虽然问题相似,但所给出的讨论/答案存在很大差异.

编辑:我从问题中意识到我可以更清楚.对不起代码拼写错误,是的,它应该使用适当的python运算符进行添加.

关于输入数据,我只选择了一个随机数列表,因为这是一个常见的样本.在我的情况下,我正在使用一个dict,我期望很多keyerrors,可能95%的密钥将不存在,并且存在的少数将包含数据集群.

无论输入数据集如何,我都对一般性讨论感兴趣,但当然有运行时间的样本很有趣.

我的标准方法就像许多其他帖子一样

list =  (100 random numbers)
d = {}
for x in list:
    if x in d:
        d[x]+=1
    else:
        d[x]=1
Run Code Online (Sandbox Code Playgroud)

但我只是想到这个更快,因为我们不必检查字典是否包含密钥.我们只是假设它确实如此,如果没有,我们会处理它.有什么区别或者Python比我聪明吗?

list =  (100 random numbers)
d = {}
for x in list:
    try:
        d[x]+=1
    except KeyError:
        d[x] = 1
Run Code Online (Sandbox Code Playgroud)

与数组中的索引,越界,负索引等相同的方法.

python performance counter dictionary keyerror

11
推荐指数
1
解决办法
2万
查看次数

测试KeyError

我正在尝试编写一个单元测试,用于验证KeyError在将错误的密钥传递给字典时创建的单元测试.

引发异常的代码:

connections = SettingsManager().get_connections()
try:
    connection = connections[self.conn_name]
except Exception:
    self.log.error("Connection %s does not exist, exiting." % conn_name)
    self.log.error(sys.exc_info()[0])
    raise
Run Code Online (Sandbox Code Playgroud)

我看过并发现KeyError使用lambda的测试,但我没有太多运气.这是我到目前为止的测试,但它与实际的错误KeyError.

def test_bad_connection(self):
    #Testing to see if a non existant connection will fail gracefully.
    records = [1, 2]
    given_result = DataConnector("BadConnection").generate_data(self.table, records)
    expected_result = "BadConnection"

    self.assertRaises(KeyError, given_result[:1])
Run Code Online (Sandbox Code Playgroud)

python unit-testing keyerror

10
推荐指数
2
解决办法
6930
查看次数

python dictionary datetime as key,keyError

我正在尝试在Linux中使用cron运行Python脚本,它应该构建一个数据字典.我试图datetime().now().time()在字典中使用键作为键,但它似乎引发了错误.

这个datetime类型不能用作Python中的字典键吗?如果是这样的话,我的替代方案是什么?

码:

time_now = dt.datetime.now().time()
date_today = dt.datetime.now().date()
usage_dict_hourly = {}
date_wise_dict = {}

def constructing_dict(data_int):
    date_wise_dict[usage_dict_hourly[time_now]] = data_int
    print date_wise_dict
Run Code Online (Sandbox Code Playgroud)

错误:

<ipython-input-9-ef6a500cc71b> in constructing_dict(data_int)
     36 
     37 def constructing_dict(data_int):
---> 38     date_wise_dict[usage_dict_hourly[time_now]] = data_int
     39     print date_wise_dict
     40 

KeyError: datetime.time(22, 40, 33, 746509)
Run Code Online (Sandbox Code Playgroud)

python datetime dictionary keyerror

10
推荐指数
2
解决办法
9376
查看次数

在读取制表符分隔的数据时,Pandas似乎忽略了第一列名称,给出了KeyError

我在Ubuntu 13.10上的ipython3中使用pandas 0.12.0,以便在txt文件中拼写大的制表符分隔数据集.使用read_table从txt创建DataFrame似乎工作,第一行作为标题读取,但尝试使用其名称作为索引访问第一列会引发KeyError.我不明白为什么会发生这种情况,因为列名都显示已正确读取,并且每个其他列都可以这种方式编入索引.

数据如下所示:

RECORDING_SESSION_LABEL LEFT_GAZE_X LEFT_GAZE_Y RIGHT_GAZE_X    RIGHT_GAZE_Y    VIDEO_FRAME_INDEX   VIDEO_NAME
73_1    .   .   395.1   302 .   .
73_1    .   .   395 301.9   .   .
73_1    .   .   394.9   301.7   .   .
73_1    .   .   394.8   301.5   .   .
73_1    .   .   394.6   301.3   .   .
73_1    .   .   394.7   300.9   .   .
73_1    .   .   394.9   301.3   .   .
73_1    .   .   395.2   302 1   1_1_just_act.avi
73_1    .   .   395.3   302.3   1   1_1_just_act.avi
73_1    .   .   395.4   301.9   1 …
Run Code Online (Sandbox Code Playgroud)

python ipython tab-delimited pandas keyerror

9
推荐指数
2
解决办法
7767
查看次数

获取引发KeyError(key)KeyError:在生产设置上使用django'SECRET_KEY'

我有两个单独的设置文件用于生产和开发,以及一个常见的base.py设置文件
base.py.

SECRET_KEY = r"!@#$%^&123456"
Run Code Online (Sandbox Code Playgroud)

prod.py

from .base import *
SECRET_KEY = os.environ['SECRET_KEY']
Run Code Online (Sandbox Code Playgroud)

manage.py

#!/usr/bin/env python
import os

import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")

from django.core.management import execute_from_command_line

execute_from_command_line(sys.argv)
Run Code Online (Sandbox Code Playgroud)

当我在终端输入时:

python manage.py shell --settings=entri.settings.prod
Run Code Online (Sandbox Code Playgroud)

我收到错误:

raise KeyError(key)
KeyError: 'SECRET_KEY'
Run Code Online (Sandbox Code Playgroud)

帮助我,我是django和python的新手

python django keyerror

9
推荐指数
1
解决办法
2万
查看次数

迭代Pandas系列时出错

当我得到这个系列的第一个和第二个元素时,它工作正常,但是从元素3开始,当我尝试获取时出错.

type(X_test_raw)
Out[51]: pandas.core.series.Series

len(X_test_raw)
Out[52]: 1393

X_test_raw[0]
Out[45]: 'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...'

X_test_raw[1]
Out[46]: 'Ok lar... Joking wif u oni...'

X_test_raw[2]
Run Code Online (Sandbox Code Playgroud)

KeyError:2

python indexing for-loop pandas keyerror

9
推荐指数
2
解决办法
9749
查看次数

我什么时候应该在 python 中引发 LookupError ?

Python 的内置异常文档定义LookupError为:

当映射或序列上使用的键或索引无效时引发的异常的基类:IndexError、KeyError。这可以通过 codecs.lookup() 直接引发。

这个基类应该只在捕获使用索引和键访问字典的尝试部分时使用,当一个人想要速记捕获两者时,还是有另一种情况下你会使用它?

python lookup exception keyerror

9
推荐指数
1
解决办法
6421
查看次数

即使密钥存在,Pandas groupby 也会给出“keyError”

我是 Python 新手,对于我的一个项目,我需要将 csv 转换为嵌套 Json。在网上搜索,我发现pandas对这种情况很有帮助。我按照将CSV 数据转换为 Python 中的嵌套 JSON 中给出的方法进行操作 ,但我收到了 keyError 异常KeyError: 'state'

df info
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
country    4 non-null object
 state     4 non-null object
 city      4 non-null object
dtypes: object(3)
memory usage: 176.0+ bytes
None
Traceback (most recent call last):
  File "csvToJson.py", line 31, in <module>
    grouped = df.groupby(['country', 'state'])
  File "/home/simarpreet/Envs/j/lib/python3.7/site-packages/pandas/core/generic.py", line 7632, in groupby
    observed=observed, **kwargs)
  File "/home/simarpreet/Envs/j/lib/python3.7/site-packages/pandas/core/groupby/groupby.py", line …
Run Code Online (Sandbox Code Playgroud)

python csv json pandas keyerror

9
推荐指数
1
解决办法
4万
查看次数

Instabot KeyError: 'urlgen'

我正在尝试做一个 instagram 机器人,但我只能运行一次代码,它运行良好,但是当我再次尝试时,它给我带来了这个错误,我不会写我的用户并显然传递这个问题哈哈

from instabot import *
session = Bot()
session.login(username = "myuser",
              password = "mypass")
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

2021-02-01 16:07:42,401 - INFO - Instabot version: 0.117.0 Started
Traceback (most recent call last):
  File "C:/Users/EQUIPO/Desktop/5 CUATRI/Phyton/Ejercicios Prueba/nsoe.py", line 3, in <module>
    session.login(username = "nota.niceplace",
  File "C:\Program Files\Python38\lib\site-packages\instabot\bot\bot.py", line 443, in login
    if self.api.login(**args) is False:
  File "C:\Program Files\Python38\lib\site-packages\instabot\api\api.py", line 240, in login
    self.load_uuid_and_cookie(load_cookie=use_cookie, load_uuid=use_uuid)
  File "C:\Program Files\Python38\lib\site-packages\instabot\api\api.py", line 199, in load_uuid_and_cookie
    return load_uuid_and_cookie(self, load_uuid=load_uuid, load_cookie=load_cookie)
  File "C:\Program Files\Python38\lib\site-packages\instabot\api\api_login.py", line 354, in load_uuid_and_cookie …
Run Code Online (Sandbox Code Playgroud)

python cookies keyerror

9
推荐指数
1
解决办法
2946
查看次数

Pandas 错误:__setitem__() 无法将字典值识别为列名列表

编辑:看起来这是 Pandas 中的一个潜在错误。查看@NicMoetsch 提出的这个 GitHub问题,注意到使用字典值分配的意外行为与框架__setitem__()__getitem__().


在我之前的代码中,我用字典重命名了一些列:

cols_dict = {
     'Long_column_Name': 'first_column',
     'Other_Long_Column_Name': 'second_column',
     'AnotherLongColName': 'third_column'
}
for key, val in cols_dict.items():
    df.rename(columns={key: val}, inplace=True)
Run Code Online (Sandbox Code Playgroud)

(我知道这里不需要循环——在我的实际代码中,我必须在数据帧列表中搜索数据帧的列,并获得字典键的子字符串匹配。)

后来我做了一些清理applymap(),索引字典值,它工作正常

pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将切片分配回自身时,我收到一个关键错误(此处为完整错误消息)。

pibs[cols_dict.values()] = pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/.local/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3079             try:
-> 3080                 return self._engine.get_loc(casted_key) …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas keyerror

8
推荐指数
1
解决办法
199
查看次数