小编Rus*_*hal的帖子

Python字典理解

是否可以在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)

不过,我得到一个SyntaxErrorfor.

另外(我不需要这部分,但只是想知道),你能否将字典的键设置为一堆不同的值,如下所示:

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)

python dictionary list-comprehension

367
推荐指数
7
解决办法
33万
查看次数

如何在Python中更改按钮大小?

我在学校做一个简单的项目,我需要点击六个不同的按钮.按钮必须有不同的大小,但我找不到怎么做.我使用以下方法制作了按钮:

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 tkinter

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

Python PIL - 绘制圆形

我试图绘制一个简单的圆圈并使用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(我认为模式可能会影响显示的内容),但这并没有解决它.

我怎样才能解决这个问题?谢谢!

python imaging python-imaging-library

13
推荐指数
2
解决办法
3万
查看次数

故意删除替代docker-compose文件中的卷

对于生产部署,我不想要共享卷.所以,我有一个覆盖文件,但这不会删除卷.

有没有办法删除覆盖文件中的共享卷?我想避免仅仅为了开发而使用覆盖,因为这看起来很笨拙.

这是我的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)

docker docker-compose

13
推荐指数
2
解决办法
5334
查看次数

可汗学院的语言本土化

我目前正致力于可汗学院的语言本地化,我已经从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问题有任何建议?

感谢任何建议.

python django internationalization jinja2 babel

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

多变量列表理解

我正在研究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)

如何进行双变量列表理解?谢谢!

python list-comprehension list

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

创建新列表而不更改原始列表

我有一个清单:

         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?

python sorting list

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

如何将LF转换为CRLF?

我在网上找到了大多数英文单词的列表,但换行符是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)

python unix

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

在Tkinter的Toplevel:防止打开两个Windows

说我有一些简单的代码,像这样:

from Tkinter import *
root = Tk()
app = Toplevel(root)
app.mainloop()
Run Code Online (Sandbox Code Playgroud)

这将打开两个窗口:Toplevel(root)窗口和Tk()窗口.

是否可以避免Tk()窗口(root)打开?如果是这样,怎么样?我只想要顶级.我希望这种情况发生,因为我想提出一个计划,将有多个窗口打开,这是所有Toplevel的的root.

谢谢!

python tkinter

6
推荐指数
1
解决办法
6559
查看次数

Control + Number Tkinter绑定

我想将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 Clickwidget.bind("<Control-h>", lambda event: someFunction(event))束缚 …

python graphics tkinter

6
推荐指数
1
解决办法
2998
查看次数