小编dan*_*dee的帖子

如何排序Python对象

我有一个嵌套列表,其中包含不同的对象,它们是嵌套列表中的重复对象对象,我正在尝试删除它们但我一直在

TypeError: unorderable types: practice() < practice()

我知道这个错误是由我尝试使用对象而不是整数引起但我不知道如何删除重复项这里是我试过的

class practice:
    id = None

    def __init__(self,id):
        self.id = id

a = practice('a')
b = practice('b')
c = practice('c')
d = practice('d')
e = practice('e')
f = practice('f')

x = [[a,b],[c,d],[a,b],[e,f],[a,b]]

unique_list = list()
for item in x:
    if sorted(item) not in unique_list:
        unique_list.append(sorted(item))

print(unique_list)
Run Code Online (Sandbox Code Playgroud)

python list nested-lists python-3.x

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

在Python中打印具有最高值的嵌套列表的正确方法是什么

我有一个嵌套列表,我正在尝试获取总和并打印出具有最高数值的列表,当各个数字相加时

x = [[1,2,3],[4,5,6],[7,8,9]]
highest = list()

for i in x:
    highest.append(sum(i))

for ind, a in enumerate(highest):
    if a == max(highest):
        print(x[ind])
Run Code Online (Sandbox Code Playgroud)

我已经能够打印出结果,但我认为应该有一种简单的Pythonic方式(可能使用列表理解).

我该怎么做?

python list nested-lists python-3.x

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

单元测试中的 assertRaises 没有正确捕获异常

我有一个包含代码的文件 testtest.py

import unittest

def add(self, a, b):
    return a + b

class Test(unittest.TestCase):

    def test_additon(self):
        self.assertRaises(TypeError, add, 1 + '1', msg="Additon failed")
        #self.assertRaises(TypeError, lambda: add(1 + '1'), msg="Addition failed")

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

问题是assertRaises没有正确捕获异常,并且我所有的测试都因不基于条件的错误而失败,这是我得到的输出:

E
======================================================================
ERROR: test_additon (__main__.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "testtest.py", line 9, in test_additon
    self.assertRaises(TypeError, add, 1 + '1', msg="Additon failed")
TypeError: unsupported operand type(s) for +: 'int' and 'str'

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用 …

python lambda unit-testing python-unittest python-3.5

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

Flask.abort() 到底做了什么?

我实际上正在使用烧瓶。我使用 Flask 来运行服务器,该服务器将由 chrome 扩展 (js) 请求。

从扩展请求服务器非常简单:我使用chrome.runtime.sendMessage()方法。此方法还提供回调函数,以 JSON 对象(来自服务器的响应)作为参数。

例如,假设我的服务器上有这条路由:

@app.route('/users', methods=['POST'])
    def api_login():
        if 'username' not in request.json :
            return jsonify(success=false)
        else :
            return jsonify(success=true)
Run Code Online (Sandbox Code Playgroud)

然后,我可以在我的扩展中,更准确地说是在回调函数中,检查成功值:

function(response) {
    if(response.success){
        console.log("Login ok !")
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在,我的团队不想再依赖它,而是想使用 http 错误代码。我知道flask有一个中止功能,但是在阅读文档时,我很难理解它的真正作用。当我调用我的路线时:

else:
    abort(422, {"error":"Missing parameters"})
Run Code Online (Sandbox Code Playgroud)

我如何在扩展(js)上使用这些信息?调用 abort 时,flask 是否会自动返回特定的 JSON 对象?如何查看错误代码?我想在客户端代码中做类似的事情:

if(response.status == 422) {
    console.log("Error")
}
Run Code Online (Sandbox Code Playgroud)

阅读所有关于 abort() 的 StackOverflow 线程,我得到的线索之一是使用装饰器 @app.errorhandler(code) 定义一个特定的错误函数:

@app.errorhandler(422)
def myErrorCase(error):
    return jsonify(status=422, error="missing parameters")
Run Code Online (Sandbox Code Playgroud)

但我认为还有更直接的方法。

感谢您的帮助。

javascript python google-chrome flask

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

如何并行添加两个嵌套列表并将结果附加到python中的新列表

我试图并行添加两个不相等的嵌套列表的所有元素,并将结果追加到另一个新列表,我写了一些可以添加它们的hacky代码,但代码有很多问题,首先我试图通过将0添加到列表的末尾来使这些对相等,但代码仍然遇到问题,因为第一对的长度是3而第二对的长度是4,我也尝试使用map但是我无法添加整数和NoneType,

import pdb
import itertools

x = [[2,3,3], [5,0,3]]
y = [[0,3], [2,3,3,3]]


for idx, (a, b) in enumerate(itertools.zip_longest(x, y)):
    while len(a) < len(b):
        x[idx].append(0)

    while len(b) < len(a):

        y[idx].append(0)

print(x, y)

new_list = list()
for i in zip(x, y):
    for idx, j in enumerate(i):
        for ind, a in enumerate(j):
            val = x[idx][ind] + y[idx][ind]
            new_list.append(val)
            print(new_list)
Run Code Online (Sandbox Code Playgroud)

最终的结果应该是这样的

[2, 6, 3, 7, 3, 6, 3]
Run Code Online (Sandbox Code Playgroud)

python list nested-lists python-3.x

3
推荐指数
1
解决办法
366
查看次数

How do i get the version of Odoo From the database

我有用于不同版本的Odoo ERP的各种数据库。我花了很多时间试图找到解决这个问题的方法,但是我没有成功。

我如何找出最初用于创建数据库的Odoo版本?

openerp

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

如何获取列表中的空字典数

我有一个这种格式的列表[['A', 'B'], {}, {}, {}]我正在尝试获取列表中空字典的数量,这是正确做到这一点的最pythonic方式,我已经能够做到但我发现自己必须创建一个过程中的临时列表是否有更有效的方法来执行此操作而无需创建临时列表?

a = [['A', 'B'], {'test': 'lang'}, {}, {}]
tmp_list = list()

for i in a:
    if isinstance(i, dict):
        if len(i) == 0:
            tmp_list.append(i)

print(len(tmp_list))
Run Code Online (Sandbox Code Playgroud)

python dictionary python-3.x

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

为什么python套接字不能解析带有http的url

我的脚本基本上看起来像这样

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('http://goal.com', 80))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,像这样

Traceback (most recent call last):
  File "/home/danidee/PycharmProjects/b&h/dang.py", line 4, in <module>
    s.connect(('http://goal.com', 80))
socket.gaierror: [Errno -2] Name or service not known
Run Code Online (Sandbox Code Playgroud)

这意味着python无法解析该特定主机,

如果我删除http://并保留它goal.com或通过我的浏览器发出请求,它就没事了,脚本和浏览器不会抛出任何错误,stackoverflow上的答案之一建议删除代理我已经完成但错误没有从我试过的终端开始走了

host http://goal.com
Run Code Online (Sandbox Code Playgroud)

但它也没有解决,我猜这是我的系统配置,但我无法弄明白我已经调查过/etc/hosts,但我没有看到任何奇怪的东西.

我知道我可以做到没有http://但我想知道为什么它不会那样工作,而且如果我想指定另一个协议,如果httpsftp

对于ftp我已经看过代码,ftp.goal.com例如,它似乎工作正常,但我尝试了http,它仍然失败.

python sockets linux http python-3.x

-1
推荐指数
2
解决办法
1553
查看次数