我的问题与字典键有关.我想设置一个包含任意单个对象的3个键的字典.键必须按顺序排列,并且可以具有多种值.例如,
dictionary = {(key1,key2,key3) : object}
Run Code Online (Sandbox Code Playgroud)
key1可以是1到10之间的任何值key2可以是11到20之间的任何值key3可以是21到30之间的任何值
按键的放置顺序很重要.
更具体地说,我的键对应于x,y,z笛卡尔坐标的范围,其中许多物体漂浮在其中.我希望能够基于x,y,z位置对对象的相对位置进行排序.
有什么方法可以设置它,还是我必须采取不同的方法?谢谢你的帮助!
任何人都可以建议我在python中导入模块的最pythonic方式是什么?让我解释一下 - 我已经阅读了很多python代码,并找到了几种不同的方法来导入模块或者更精确 - 何时导入:
请在下面找到样品.
#references.py
import re
import clr
import math
import System
import System.Text.RegularExpressions
import System.Random
import System.Threading
import System.DateTime
# System assemblies
clr.AddReference("System.Core")
clr.AddReference("System.Data")
clr.AddReference("System.Drawing")
...
#test.py
from references.syslibs import (Array, DataTable, OleDbConnection, OleDbDataAdapter,
OleDbCommand, OleDbSchemaGuid)
def get_dict_from_data_table(dataTable):
pass
Run Code Online (Sandbox Code Playgroud)
from ... import ...
from ... import ...
def Generate(param, param1 ...):
pass
Run Code Online (Sandbox Code Playgroud)
import clr
clr.AddReference("assembly")
from …
Run Code Online (Sandbox Code Playgroud) 我试图在以下等式中使用数组中的值:
for x in range(len(prof)):
PB = 2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
Run Code Online (Sandbox Code Playgroud)
当我运行时收到以下错误:
Traceback (most recent call last):
File "C:/Users/cwpapine/Desktop/1mPro_Chlavg", line 240, in <module>
PB = float(2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
TypeError: 'float' object is not callable
Run Code Online (Sandbox Code Playgroud)
这可能很简单,但我无法弄明白.任何帮助将不胜感激.提前致谢
我发现有一件事让我发疯.如果我指定以下列表:
lVals = [1, 01, 2011]
Run Code Online (Sandbox Code Playgroud)
然后不会显示任何错误,如果我使用会发生相同的情况02,03,04,05,06,07
,但是如果我使用08
或09
作为列表中的第二项,我会得到以下异常:
>>> a = [26, 08, 2011]
File "<stdin>", line 1
a = [26, 08, 2011]
^
SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)
当我将这些数字(08
,09
)放在列表中的任何位置(例如[08,10,2011]
)时,也会出现相同的行为,即使我尝试分配08
给单个int
变量,我也会得到相同的异常.
这有什么原因吗?
我刚开始学习python.我遇到了lambda函数.在其中一个问题上,作者要求为一个数字的阶乘写一个单线性lambda函数.
这是给出的解决方案:
num = 5
print (lambda b: (lambda a, b: a(a, b))(lambda a, b: b*a(a, b-1) if b > 0 else 1,b))(num)
Run Code Online (Sandbox Code Playgroud)
我无法理解奇怪的语法.(a,b)是什么意思?
谁能解释一下?
谢谢
我正在研究Django项目(RSS和推文聚合器)
普通文字:
这是代码:
x = 100
divisors = ()
for i in range(1,x):
if x%i == 0:
divisors = divisors + (i)
Run Code Online (Sandbox Code Playgroud)在运行程序时,出现以下错误:
divisors = divisors + (i)
TypeError: can only concatenate tuple (not "int") to tuple
Run Code Online (Sandbox Code Playgroud)在我们的项目中,我们使用以下模块进行级别"控制":'grid','gridcell','combo'等.网格模块导入gridcell模块,因为网格由单元格组成,而任何单元格都可以在其中包含组合.所以最初我们开始在这些类中使用'from ... import ...'语句,方法如下:
#grid.py
from controls.gridcell import cell
#gridcell.py
from controls.combo import combo
Run Code Online (Sandbox Code Playgroud)
但是在我们开始使用网格作为组合内容之前,这是可以的.一旦我们开始这样做,我们就需要将'from grid import grid'语句添加到'combo.py'中.执行此操作后,我们得到一个导入异常:
from controls.gridcell import gridcell
ImportError: Cannot import name gridcell
Run Code Online (Sandbox Code Playgroud)
编辑:
我也试过'import ... as ...'并得到以下错误:
import controls.gridcell as gridcell
AttributeError: 'module' object has no attribute 'gridcell'
Run Code Online (Sandbox Code Playgroud)
我已经阅读了几篇文章,我发现的关于如何解决这个问题的所有内容都是使用'import'语句,例如:
#grid.py
import controls.gridcell
#gridcell.py
import controls.combo
#combo.py
import controls.grid
Run Code Online (Sandbox Code Playgroud)
但这导致我们使用全名,如'controls.gridcell.cell','controls.combo.combo','controls.grid.grid'等.
所以我的问题是 - 有没有其他方法可以做到这一点(因此可以使用较短的名称)或者这是如何解决这个问题的唯一方法?
抱歉,如果我错过了什么
对所有人而言
我正在使用Matplotlib和PIL使用python,需要查看图像选择并剪切我必须使用的区域,只留下所选区域的图像.我知道如何使用pil切割图像(使用im.crop)但是如何通过鼠标点击选择坐标来压缩图像?为了更好地解释,我裁剪图像如下:
import Pil
import Image
im = Image.open("test.jpg")
crop_rectangle = (50, 50, 200, 200)
cropped_im = im.crop(crop_rectangle)
cropped_im.show()
Run Code Online (Sandbox Code Playgroud)
我需要在一个我想要使用的矩形中用鼠标点击给出坐标"crop_rectangle",我该怎么办呢?
谢谢
python ×10
dictionary ×1
django ×1
key ×1
lambda ×1
math ×1
matplotlib ×1
python-2.7 ×1
python-3.x ×1
tornado ×1
tuples ×1
types ×1