是否可以在Python中创建字典理解(用于键)?
没有列表推导,你可以使用这样的东西:
l = []
for n in range(1, 11):
l.append(n)
Run Code Online (Sandbox Code Playgroud)
我们可以将其缩短为列表理解:l = [n for n in range(1, 11)]
.
但是,假设我想将字典的键设置为相同的值.我可以:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
Run Code Online (Sandbox Code Playgroud)
我试过这个:
d = {}
d[i for i in range(1, 11)] = True
Run Code Online (Sandbox Code Playgroud)
不过,我得到一个SyntaxError
上for
.
另外(我不需要这部分,但只是想知道),你能否将字典的键设置为一堆不同的值,如下所示:
d = {}
for n in range(1, 11):
d[n] = n
Run Code Online (Sandbox Code Playgroud)
字典理解是否可以实现?
d = {}
d[i for i in range(1, 11)] = [x for …
Run Code Online (Sandbox Code Playgroud) 我在学校做一个简单的项目,我需要点击六个不同的按钮.按钮必须有不同的大小,但我找不到怎么做.我使用以下方法制作了按钮:
def __init__(self, master):
super().__init__(master)
self.grid()
self.button1 = Button(self, text = "Send", command = self.response1)
self.button1.grid(row = 2, column = 0, sticky = W)
Run Code Online (Sandbox Code Playgroud)
我想像这样的东西:
self.button1.size(height=100, width=100)
Run Code Online (Sandbox Code Playgroud)
会工作,但它没有,我无法找到如何在任何地方做到这一点.
我使用的是Python 3.3.
我试图绘制一个简单的圆圈并使用Python Imaging Library将其保存到文件中:
import Image, ImageDraw
image = Image.new('RGBA', (200, 200))
draw = ImageDraw.Draw(image)
draw.ellipse((20, 180, 180, 20), fill = 'blue', outline ='blue')
draw.point((100, 100), 'red')
image.save('test.png')
Run Code Online (Sandbox Code Playgroud)
该点draw.point
出现在图像上,但椭圆本身不会出现.我尝试将模式更改为just RGB
(我认为模式可能会影响显示的内容),但这并没有解决它.
我怎样才能解决这个问题?谢谢!
对于生产部署,我不想要共享卷.所以,我有一个覆盖文件,但这不会删除卷.
有没有办法删除覆盖文件中的共享卷?我想避免仅仅为了开发而使用覆盖,因为这看起来很笨拙.
这是我的docker-compose.yml
:
version: '2'
# other services defined here
services:
web:
build:
context: .
# other configuration
volumes:
- .:${APP_DIR}
Run Code Online (Sandbox Code Playgroud)
我的docker-compose.prod.yml
:
version: '2'
services:
web:
volumes: []
restart: always
Run Code Online (Sandbox Code Playgroud) 我目前正致力于可汗学院的语言本地化,我已经从Google Code下载了源代码8051 .在调查信息和在线查看代码之后,该项目使用jinja2作为模板语言.我可以用babel来完成我的工作.
通过以下工作,我最终可以通过以下修改启用{%trans%}
和{%endtrans%}
标记模板引擎的可解析性:
在webapp2_extra/jinja2.py中:
from django.utils import translation
env.install_gettext_translations(translation)
Run Code Online (Sandbox Code Playgroud)
在config_jinja2.py中
-- put following line
"extensions": ['jinja2.ext.i18n']
Run Code Online (Sandbox Code Playgroud)
但是,我*.mo
和*.po
(来自pybabel)的翻译模板没有正确地将值内的标签转换为目标语言.我认为babel集成应该来自webapp2_extra.i18n.py,但我不知道如何启用它.
Google中的帖子很少提及以下代码可能有效:
from webapp2_extras import i18n
env.install_gettext_translations(i18n)
Run Code Online (Sandbox Code Playgroud)
但是,它失败了,因为它无法识别{%trans%}
标签.那么有没有人有相同问题的经验或对jinja2 i18n问题有任何建议?
感谢任何建议.
我正在研究Project Euler#35,我需要找到一个数字的循环排列.使用itertools
,我可以很容易地得到一个数字的排列.但是,我想用列表理解来做(因为它似乎更像Pythonic;我也试图熟悉列表理解).
我发现所有圆形素数只能包含数字1,3,7和9(这不包括2和5,根据定义它们是圆形素数).如果任何其他数字在数字(0,2,4,5,6或8)中,则其中一个排列将不是素数(因为该数字在至少一个排列中将是最后一个).
因此,我尝试这样做:
from itertools import permutations
l = [x for x in list(permutations('1397', y)) for y in range(7)]
Run Code Online (Sandbox Code Playgroud)
我需要使用,y for y in range(7)
以便我获得不同长度的排列.
但是,这给了我一个TypeError
:
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
l = [x for x in list(permutations('1397', y)) for y in range(7)]
TypeError: an integer is required
Run Code Online (Sandbox Code Playgroud)
这有效,但它没有在一个列表理解中使用两个变量:
l = []
for y in range(7):
l.append([x for x in list(permutations('1379', y))])
Run Code Online (Sandbox Code Playgroud)
如何进行双变量列表理解?谢谢!
我有一个清单:
L=[2,0,4,5]
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的列表而不改变L本身:
K= [0,2,4,5]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
K=L.sort()
print(K)
Run Code Online (Sandbox Code Playgroud)
它没有打印,如果我尝试:
print(L)
Run Code Online (Sandbox Code Playgroud)
它出来了:[0,2,4,5]
为什么K不是= [0,2,4,5]?如何创建新列表[0,2,4,5]并且不更改L?
我在网上找到了大多数英文单词的列表,但换行符是unix-style(用Unicode编码:UTF-8).我在这个网站上找到了它:http://dreamsteep.com/projects/the-english-open-word-list.html
如何将换行符转换为CRLF,以便我可以迭代它们?我将使用它们的程序遍历文件中的每一行,因此每行必须有一个单词.
这是文件的一部分: bitbackbitebackbiterbackbitersbackbitesbackbitingbackbittenbackboard
它应该是:
bit
backbite
backbiter
backbiters
backbites
backbiting
backbitten
backboard
Run Code Online (Sandbox Code Playgroud)
如何将文件转换为此类型?注意:它是26个文件(每个字母一个),总共80,000个单词(所以程序应该非常快).
我不知道从哪里开始,因为我从未使用过unicode.提前致谢!
使用rU
作为参数(如建议的那样),在我的代码中使用:
with open(my_file_name, 'rU') as my_file:
for line in my_file:
new_words.append(str(line))
my_file.close()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
addWords('B Words')
File "D:\my_stuff\Google Drive\documents\SCHOOL\Programming\Python\Programming Class\hangman.py", line 138, in addWords
for line in my_file:
File "C:\Python3.3\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 7488: character maps to <undefined> …
Run Code Online (Sandbox Code Playgroud) 说我有一些简单的代码,像这样:
from Tkinter import *
root = Tk()
app = Toplevel(root)
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
这将打开两个窗口:Toplevel(root)
窗口和Tk()
窗口.
是否可以避免Tk()
窗口(root
)打开?如果是这样,怎么样?我只想要顶级.我希望这种情况发生,因为我想提出一个计划,将有多个窗口打开,这是所有Toplevel
的的root
.
谢谢!
我想将Control+1序列绑定到窗口.widget.bind("<Control-1>", lambda event: someFunction(event))
绑定Control + Left Mouse Click.这是我的代码片段,将使用此代码:
self.master.bind("<Control-1>", lambda event: self.allTypeButtons[1].invoke())
self.master.bind("<Control-2>", lambda event: self.allTypeButtons[2].invoke())
self.master.bind("<Control-3>", lambda event: self.allTypeButtons[3].invoke())
# self.allTypeButtons is a dictionary with Radiobuttons as its values
Run Code Online (Sandbox Code Playgroud)
我也试过了self.master.bind("<Control>-1", lambda event: self.allTypeButtons[1].invoke())
,但是这给了我:_tkinter.TclError: bad event type or keysym "Control"
.
此外,self.master.bind("Control-1", lambda event: self.allTypeButtons[1].invoke())
然后按下Control+1不会调用该事件.
我知道那种widget.bind("1", lambda event: someFunction(event))
束缚1, widget.bind("<1>", lambda event: someFunction(event))
束缚Left Mouse Click和widget.bind("<Control-h>", lambda event: someFunction(event))
束缚 …