每学期我至少有一个Python学生使用dict.update()来添加单个键/值对,即:
mydict.update({'newkey':'newvalue'})
Run Code Online (Sandbox Code Playgroud)
代替
mydict['newkey'] = 'newvalue'
Run Code Online (Sandbox Code Playgroud)
我不教这种方法,我不知道他们在哪里找到这个例子,但是我告诉他们不要这样做,因为效率较低(可能会创建一个新的2元素字典)并且因为它是非标准的.
老实说,我可以理解使用可见方法而不是这种语法的愿望 - 它可能与其他方法调用更加一致.但我觉得它看起来像一个新手的方法.
在这一点上,任何人都有任何智慧吗?
在Flask应用程序中有两个文件:
base.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="../static/main.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.1/css/bootstrap.min.css">
<title>Title</title>
</head>
<body>
<div id="content">
{% marker "content" %}
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
upload.html,延伸 base.html
{% extends "base.html" %}
{% block "content " %}
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我在视图中调用后者:return render_template('upload.html' ),我收到一个错误:
jinja2.exceptions.TemplateSyntaxError
TemplateSyntaxError: expected token 'name', got 'string'
Run Code Online (Sandbox Code Playgroud) 我被要求接受整数列表(x),在列表中添加第一个值和最后一个值,然后返回一个带和的整数.我已经使用以下代码来做到这一点,但我遇到的问题是,当我尝试评估总和时,它实际上是一个项目列表而不是整数.我试图将它转换为int但我似乎无法让它工作.
def addFirstAndLast(x):
lengthOfList = len(x)
firstDigit = x[0:1]
lastDigit = x[lengthOfList:lengthOfList-1]
sum = firstDigit + lastDigit
return sum
Run Code Online (Sandbox Code Playgroud) Environment:
Request Method: GET
Django Version: 1.5
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.linkedin',
'django.contrib.admin',
'django.contrib.admindocs')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/var/www/sampleapp/allauth/account/views.py" in dispatch
41. **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
86. return handler(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/edit.py" in get
155. return self.render_to_response(self.get_context_data(form=form))
File "/var/www/sampleapp/allauth/account/views.py" in get_context_data
67. …Run Code Online (Sandbox Code Playgroud) 假设我有这些列表:
ids = [4, 3, 7, 8]
objects = [
{"id": 7, "text": "are"},
{"id": 3, "text": "how"},
{"id": 8, "text": "you"},
{"id": 4, "text": "hello"}
]
Run Code Online (Sandbox Code Playgroud)
我怎样objects才能对它们的ID顺序进行排序ids?即得到这个结果:
objects = [
{"id": 4, "text": "hello"},
{"id": 3, "text": "how"},
{"id": 7, "text": "are"},
{"id": 8, "text": "you"}
]
Run Code Online (Sandbox Code Playgroud) 我有一份我难以理解的家庭作业.我正在尝试编写一个程序,在第n个数字上输出斐波纳契数列.这是我到目前为止所拥有的:
def fib():
n = int(input("Please Enter a number: "))
if n == 1:
return(1)
elif n == 0:
return(0)
else:
return (n-1) + (n-2)
mylist = range[0:n]
print(mylist)
Run Code Online (Sandbox Code Playgroud)
我想我可以使用单独的函数,但我无法弄清楚如何传递计算斐波纳契数列的参数.然后下一步是打印出该数字的数字序列.
假设我有一个国王字典,其名称中包含罗马数字作为键,罗马数字以整数形式表示为值.
d = {'Zemco III': 3, 'Usamec XL': 40, 'Usamec VII': 7, 'Robert VIII': 8, 'Usamec XLII': 42, 'Mary XXIV': 24, 'Robert III': 3, 'Robert XV': 15, 'Usamec XLIX': 49}
我想从最古老到最年轻的列表排序,那就是Usamec XLII应该出现在Usamec XLIX之前.我还想按字母顺序对列表进行排序,即Usamec XLII应该出现在Zemco III之前.
我的方法是首先按名称排序,然后按罗马数字值排序:
x = sorted(d.items(),key=operator.itemgetter(0))
y = sorted(x,key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)
但是,因为罗马数字是键的一部分,我的字母排序不能按预期工作.我的问题是,我可以通过密钥的一部分对字典进行排序,例如,如果我的密钥是Zemco III,我可以使用key.split()[0]而不是整个密钥以某种方式对我的项目进行排序吗?谢谢!
我需要获取从范围(15,20,1)派生的数字列表,每个数字都是 15*x*100:
X Y
15 100
16 93,75
17 88,2352941176
18 83,3333333333
19 78,9473684211
20 75
Run Code Online (Sandbox Code Playgroud)
结果应该是一个包含两位小数的 y 数组。
我尝试使用 python,花了一段时间才发现它只能处理整数。然后我尝试了 numpy,但我仍然没有到达那里。我是个傻瓜,对这个问题的愚蠢感到抱歉,但在尝试了两个小时后,我决定发布一个问题。
最好的,梅斯
我搜索了网站和这个网站,无法找到这个问题的答案.我确定它在我面前的某个地方,但无法找到它.
我需要能够基于字符串导入模块.然后在传递参数时在该模块中执行函数.
我可以基于字符串导入然后使用eval()执行但我知道这不是处理此问题的最佳方法.我似乎也不能以这种方式传递论据.
我将根据字符串设置的当前模块名为TestAction.py,位于名为Tasks的文件夹中.这是TestAction.py的内容:
def doSomething(var):
print var
Run Code Online (Sandbox Code Playgroud)
这是我执行导入TestAction并执行的代码.
module = "Tasks.TestAction"
import Tasks
mymod = __import__(module)
eval(module + ".doSomething()")
Run Code Online (Sandbox Code Playgroud)
如何使这个代码#1不使用eval(),#2将var参数传递给doSomething()?
提前致谢!
假设我读了一个html网站,我得到了一个名单,例如:'Amiel,Henri-Frédéric'.
为了获取名称列表,我使用以下代码解码html:
f = urllib.urlopen("http://xxx.htm")
html = f.read()
html=html.decode('utf8')
t.feed(html)
t.close()
lista=t.data
Run Code Online (Sandbox Code Playgroud)
此时,变量lista包含一个名称列表,如:
[u'Abatantuono,Diego',...,u'Amiel,Henri-Frédéric']
现在我想:
为简单起见,我们只考虑上面的名称来完成步骤1到3.我将使用以下代码:
name=u'Amiel, Henri-Fr\xe9d\xe9ric'
name=name.encode('utf8')
array=[name]
df=pd.DataFrame({'Names':array})
df.to_csv('names')
uni=pd.read_csv('names')
uni #trying to read the csv file in a DataFrame
Run Code Online (Sandbox Code Playgroud)
此时我收到以下错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 67: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
如果我用以下代码替换上面代码的最后一行:
print uni
Run Code Online (Sandbox Code Playgroud)
我可以阅读DataFrame,但我不认为这是处理这个问题的正确方法.
我向其他用户发布了很多关于这个论点的问题,但我没有解决这个问题.