编辑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)
与数组中的索引,越界,负索引等相同的方法.
我正在尝试编写一个单元测试,用于验证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) 我正在尝试在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) 我在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) 我有两个单独的设置文件用于生产和开发,以及一个常见的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的新手
当我得到这个系列的第一个和第二个元素时,它工作正常,但是从元素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 的内置异常文档定义LookupError
为:
当映射或序列上使用的键或索引无效时引发的异常的基类:IndexError、KeyError。这可以通过 codecs.lookup() 直接引发。
这个基类应该只在捕获使用索引和键访问字典的尝试部分时使用,当一个人想要速记捕获两者时,还是有另一种情况下你会使用它?
我是 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) 我正在尝试做一个 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) 编辑:看起来这是 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)