我有一个包含许多单词(100.000+)的列表,我想要做的是删除列表中每个单词的所有子串.
所以为简单起见,让我们假设我有以下列表:
words = ['Hello', 'Hell', 'Apple', 'Banana', 'Ban', 'Peter', 'P', 'e']
Run Code Online (Sandbox Code Playgroud)
以下输出是所需的:
['Hello', 'Apple', 'Banana', 'Peter']
Run Code Online (Sandbox Code Playgroud)
'Hell'
被删除,因为它是一个子串 'Hello'
'Ban'
被删除,因为它是一个子串 'Banana'
'P'
被删除,因为它是一个子串 'Peter'
'e'
被删除,因为它是一个字符串'Hello'
,'Hell'
,
'Apple'
,等等.我做了什么
这是我的代码,但我想知道是否有比这些嵌套理解更有效的方法.
to_remove = [x for x in words for y in words if x != y and x in y]
output = [x for x in words if x not in to_remove]
Run Code Online (Sandbox Code Playgroud)
如何提高性能?我应该用regex
吗?
我有一个使用请求对象的表单:
class FooForm(forms.ModelForm):
class Meta:
model = Foo
fields = ('title', )
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super().__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
在我看来,每当我想实例化表单时,只需执行以下操作即可:
class FooCreateView(LoginRequiredMixin, CreateView):
model = Foo
form_class = FooForm
def get_form_kwargs(self):
kwargs = super(FooCreateView, self).get_form_kwargs()
kwargs.update({'request': self.request})
return kwargs
Run Code Online (Sandbox Code Playgroud)
现在,我想在管理面板中使用相同的表单,因此我执行以下操作:
class FooAdmin(admin.ModelAdmin):
form = FooForm
Run Code Online (Sandbox Code Playgroud)
但是砰!它死了:
KeyError at /admin/foo/foo/add/
'request'
Run Code Online (Sandbox Code Playgroud)
我尝试执行以下操作,但没有用
def get_form(self, request, *args, **kwargs):
form = super(FooAdmin, self).get_form(request, *args, **kwargs)
form.request = request
kwargs['request'] = request
return form
Run Code Online (Sandbox Code Playgroud)
总之,有没有办法将请求传递给管理表单?
我有一个巨大的Python整数列表(1000000+元素),但为了简单起见,我将用一个例子来说明我需要的东西.我们假设我有这个清单:
A = [1,2,3,4,100]
Run Code Online (Sandbox Code Playgroud)
现在我想得到该列表的所有组合(大小3),所以我使用itertools.
combinations = itertools.combinations(A,3)
Run Code Online (Sandbox Code Playgroud)
但我的问题是,这将按字典顺序返回组合:
(1,2,3)
(1,2,4)
(1,2,100)
(1,3,4)
Run Code Online (Sandbox Code Playgroud)
等等.
我想得到按其元素总和排序的组合.那将是:
(1,2,3)总和6,(1,2,4)和7,(1,3,4)和8,
等等.
我怎样才能做到这一点?
我有以下型号:
class Publisher(models.Model):
name = models.CharField(max_length=30)
class Book(models.Model):
title = models.CharField(max_length=100)
publisher = models.ForeignKey(Publisher)
Run Code Online (Sandbox Code Playgroud)
在我的views.py中,当我想显示发布者页面时,我也想展示他们的书籍,所以我通常会这样做:
publisher = Publisher.objects.prefetch_related('book_set').filter(pk=id).first()
Run Code Online (Sandbox Code Playgroud)
然后,经过一些处理,我也做了一些书籍的工作
for book in publisher.book_set.all():
foo()
Run Code Online (Sandbox Code Playgroud)
这很好用,但我有一个问题.如果在查询和for循环之间添加了一本书,publisher.book_set.all()
则不会有新添加的书籍,因为它是预取的.
有没有办法更新发布者对象?
我的 WebSockets 与 django 通道一起使用。我想做的最后一件事是在用户单击按钮时关闭套接字,因此在前端,我只需向服务器发送一条断开连接消息:
socket.send({action: 'disconnect'
});
然后,在我的消费者中,我只需断开连接:
async def receive(self, text_data):
text_data_json = json.loads(text_data)
if 'action' in text_data_json and text_data_json['action'] == 'disconnect':
await self.disconnect(0)
async def disconnect(self, close_code):
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)
Run Code Online (Sandbox Code Playgroud)
为什么我的 WebSocket 无法正确断开连接?(我仍然收到消息)
目标:使用 RowNumber 函数获取每行的编号,然后按值进行过滤,但保留不应用过滤器时给出的相应 RowNumber,否则 RowNumber 将始终返回 1。
\n\n在转换为 Django ORM 之前,我发现获取 SQL 语法很有帮助,如下所示:
\n\nSELECT rn.row_number, name \nFROM ( SELECT ROW_NUMBER() OVER (ORDER BY name), name\n FROM customer ) as rn\nWHERE name = 'Juan' \n
Run Code Online (Sandbox Code Playgroud)\n\n问题我可以\xc2\xb4t 设法将其转换为 Django ORM。我已经尝试过以下方法:
\n\nsubq = models.Customer.objects.all().annotate(\n rank=Window(\n expression=RowNumber(),\n order_by=(F('name'))\n )\n )\n
Run Code Online (Sandbox Code Playgroud)\n\nHere\xc2\xb4s 我不\xc2\xb4t 不知道如何继续。如何告诉我的models.Customer在其查询中使用subq作为FROM?
\n我想知道在 Django 中创建(如果它不存在)或删除(如果它存在)一个对象的最佳方法是什么。
我知道我可以做这样的事情:
if Like.objects.filter(user=request.user, post=post).exists():
Like.objects.filter(user=request.user, post=post).delete()
else:
Like.objects.create(user=request.user, post=post)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法,比如get_or_create
Django 提供的方法?
I have a boolean variable named mapped_filter
.
If I am not wrong, this variable can hold 3 values, either True
, False
or None
.
I want to differentiate each of the 3 possible values in an if
statement. Is there a better way to achieve that than doing the following?
if mapped_filter:
print("True")
elif mapped_filter == False:
print("False")
else:
print("None")
Run Code Online (Sandbox Code Playgroud) django ×5
python ×4
django-orm ×2
algorithm ×1
combinations ×1
django-admin ×1
django-forms ×1
list ×1
sorting ×1
string ×1