我经常使用sorted和groupby查找迭代中的重复项.现在我觉得它不可靠:
from itertools import groupby
data = 3 * ('x ', (1,), u'x')
duplicates = [k for k, g in groupby(sorted(data)) if len(list(g)) > 1]
print duplicates
# [] printed - no duplicates found - like 9 unique values
Run Code Online (Sandbox Code Playgroud)
为什么代码在Python 2.x的上述故障的原因进行了说明这里.
什么是可靠的pythonic方法来查找重复项?
我在SO上寻找类似的问题/答案.其中最好的是" 在Python中,我如何获取列表并将其缩减为重复列表? ",但是接受的解决方案不是pythonic(它是程序多行的......如果...添加... else ... add ... return result)和其他解决方案不可靠(取决于"<"运算符的未实现的传递性)或缓慢(O n*n).
[编辑]关闭.接受的答案帮助我在下面的答案中总结了更为一般的结论.
我喜欢使用内置类型来表示例如树结构.这就是为什么我现在害怕混合.
我正在使用django v1.10.2
我正在尝试创建动态报告,我将字段和条件以及主要的ORM模型信息存储到数据库中.
我生成动态报告的代码是
class_object = class_for_name("app.models", main_model_name)
results = (class_object.objects.filter(**conditions_dict)
.values(*display_columns)
.order_by(*sort_columns)
[:50])
Run Code Online (Sandbox Code Playgroud)
所以main_model_name可以是任何东西.
这除了的,有时相关车型的伟大工程main_model具有choicefield.
所以其中一份报告main_model是Pallet.
Pallet有很多PalletMovement.
我的显示器栏目有:serial_number,created_at,pallet_movement__location
前两列是属于Pallet模型的字段.最后一个来自PalletMovement
会发生什么样的PalletMovement模型看起来像这样:
class PalletMovement(models.Model):
pallet = models.ForeignKey(Pallet, related_name='pallet_movements',
verbose_name=_('Pallet'))
WAREHOUSE_CHOICES = (
('AB', 'AB-Delaware'),
('CD', 'CD-Delaware'),
)
location = models.CharField(choices=WAREHOUSE_CHOICES,
max_length=2,
default='AB',
verbose_name=_('Warehouse Location'))
Run Code Online (Sandbox Code Playgroud)
由于查询集会返回原始值,我如何利用choicefieldin PalletMovement模型来确保pallet_movement__location给出显示的?AB-Delaware或CD-Delaware?
请记住,main_model根据我在数据库中存储的内容,可以是任何内容. …
我正在尝试从本地系统上传Google Colaboratory中的word2vec文件,并在代码中进一步使用它.
这是我使用的代码.
from google.colab import files
uploaded = files.upload()
Run Code Online (Sandbox Code Playgroud)
每次执行它时,都会显示以下错误.
上传小部件仅在当前浏览器会话中执行单元格时可用.请重新运行此单元格以启用
MessageError Traceback (most recent call last)
<ipython-input-1-292f82be1b7a> in <module>()
1 from google.colab import files
2
----> 3 uploaded = files.upload()`
4
5 for fn in uploaded.keys():
/usr/local/lib/python3.6/dist-packages/google/colab/files.py in upload()
59 result = output.eval_js(
60 'google.colab._files._uploadFiles("{input_id}", "{output_id}")'.format(
---> 61 input_id=input_id, output_id=output_id))
62 files = collections.defaultdict(six.binary_type)
63
/usr/local/lib/python3.6/dist-packages/google/colab/output/_js.py in
eval_js(script, ignore_result)
37 if ignore_result:
38 return
---> 39 return _message.read_reply_from_input(request_id)
40
41
/usr/local/lib/python3.6/dist-packages/google/colab/_message.py in
read_reply_from_input(message_id, timeout_sec)
84 reply.get('colab_msg_id') == message_id): …Run Code Online (Sandbox Code Playgroud) 尝试使用Google Collaboratory通过这种方式上传本地文件:
from google.colab import files
uploaded = files.upload()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
仅当在当前浏览器会话中执行了单元格时,上载小部件才可用。请重新运行此单元格以启用。
我重新运行单元,但是它不起作用...
我的Centos 7服务器正在运行apache 2.4.6,并且正在使用mod_wsgi提供Django webapp。我的问题是我无法从另一台计算机的浏览器访问服务器URL。我没有从apache及其启动和运行中获得任何错误。我已经在http.conf文件中将错误日志设置为“调试”,但仍然没有错误。我知道服务器实际上通过ping连接到Internet,我知道它正在通过运行在端口:80上侦听
netstat -tunlp | grep 80。
tcp 0 0 0.0.0.0:60080 0.0.0.0:* LISTEN 3841/name-gu
tcp6 0 0 :::80 :::* LISTEN 13882/httpd
Run Code Online (Sandbox Code Playgroud)
我也暂时关闭了服务器端的所有防火墙
我的settings.py在下面有url,ip地址和localhost ALLOWED_HOSTS
我该如何调试此问题,以便检查错误?
日志:让我知道是否需要tcpdump -nn tcp port 80在服务器计算机curl -v myurl.com上运行更多信息,然后在我的计算机上运行并在服务器上获取以下结果:
13:11:52.225076 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [S], seq 3327782620, win 29200, options [mss 1460,sackOK,TS val 36451589 ecr 0,nop,wscale 7], length 0
13:11:52.225355 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [S.], seq 1689726058, ack 3327782621, win 28960, options [mss 1460,sackOK,TS val 73904848 ecr …Run Code Online (Sandbox Code Playgroud) 假设我有两个模型:
class Profile(models.Model):
#some fields here
class Ratings(models.Model):
profile = models.ForeignKey(profile)
category = models.IntegerField()
points = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
假设遵循MySQL表"评级":
profile | category | points
1 1 10
1 1 4
1 2 10
1 3 0
1 4 10
1 4 10
1 4 10
1 5 0
Run Code Online (Sandbox Code Playgroud)
我的POST数据以及其他字段值中包含以下值:
category_1_avg_val = 7
category_2_avg_val = 5
category_3_avg_val = 5
category_4_avg_val = 7
category_5_avg_val = 9
Run Code Online (Sandbox Code Playgroud)
我想过滤具有针对高于或等于所需值的类别计算的平均评级的配置文件.
一些过滤器最初应用为:
q1 = [('associated_with', search_for),
('profile_type__slug__exact', profile_type),
('gender__in', gender),
('rank__in', rank),
('styles__style__in', styles),
('age__gte', age_from),
('age__lte', …Run Code Online (Sandbox Code Playgroud) 我正试图在Django应用程序中处理一个非常令人费解的错误.当DEBUG = False时,尝试删除用户(via user.delete())会出现此数据库错误:
DatabaseError: relation "social_auth_usersocialauth" does not exist
LINE 1: ...", "social_auth_usersocialauth"."extra_data" FROM "social_au...
Run Code Online (Sandbox Code Playgroud)
但是,我在INSTALLED_APPS中没有social_auth或类似名称的任何东西,我的数据库中也没有这样的表,我的代码也没有引用任何类似的东西(我在整个'社交'上运行了一个文本搜索项目文件夹) - 再次,这在DEBUG = True时工作正常.social_auth安装在我的系统和我的PYTHONPATH上,但我看不出这个应用程序在哪里得到了应该在其数据库中拥有social_auth表的想法,更不用说为什么它只在DEBUG = False时才这样认为.
我的应用程序可以通过哪些途径获取此表,我怎么能说服它不应该在那里?
这是我的另一个问题
django-rest-framework,多模型继承,ModelSerializers和嵌套序列化
在django rest框架中我们可以像这样定义嵌套模型序列化器
class OtherModelSerializer(serializer.ModelSerializer):
mybasemodel_set = MyBaseModelSerializer(many=True)
class Meta:
model = OtherModel
Run Code Online (Sandbox Code Playgroud)
当我们创建一个OtherModelSerializer时,MyBaseModelSerializer在__init__运行之前被实例化.我相信是这种情况,因为如果我覆盖__init__()MyBaseModelSerializer并检查"实例",则它是None.
我的问题是什么时候以及如何MyBaseModelSerializer通过查询集或实例mybasemodel_set?
我的目标是覆盖我们这样做时发生的事情.
python django django-models django-queryset django-rest-framework
我正在尝试使用有理函数将曲线拟合到 X 和 Y 数据点。它可以在 Matlab 中使用 cftool ( http://de.mathworks.com/help/curvefit/rational.html ) 完成。但是,我希望在 Python 中做同样的事情。我曾尝试使用scipy.optimize.curve_fit(),但它最初需要一个我没有的函数。
有人试图在谷歌合作中使用numba吗?我只是无法弄清楚如何在这种环境中进行设置.目前,我坚持错误library nvvm not found.
python ×8
django ×5
apache ×1
centos7 ×1
choicefield ×1
django-orm ×1
file-upload ×1
matlab ×1
numba ×1
numba-pro ×1
python-2.x ×1
scipy ×1
sorting ×1
tastypie ×1