相关疑难解决方法(0)

通过python中的自定义比较器对元组列表进行排序

我有一个如下所示的元组列表: [(image, rgb tuple, float), (image, rgb tuple, float) ...]

我想按 rgb 值对这个列表进行排序。我得到了一个“目标”颜色,并且必须按照每个 rgb 元组与目标颜色的接近程度对列表进行排序。我有一个函数color_distance(c1, c2),它接受两种颜色并返回它们之间的距离。我想使用这个颜色距离函数作为比较器函数,通过每个元组的 rgb 值距离目标颜色对我的元组列表进行排序。

我可以通过选择排序对列表进行排序并使用我的 color_distance 函数进行比较,但我希望它排序更快/使用库函数。

我正在尝试sorted()在 python 中使用该函数,但不知道如何使用。

python sorting colors

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

在Python中排序对象列表

在Python中,我xml使用此模块将文件解析为字典.我的代码的核心很简单:

configdict = ConvertXmlToDict('tasks.xml')

for task in configdict['osmo_tasks']['tasks_entries']['entry']:
    print task['id'], task['due_date'], task['summary']
Run Code Online (Sandbox Code Playgroud)

上面的代码将xml文件解析为字典,然后迭代tasks并打印它们.显然,它将按照从它们读取的相同顺序打印它们,xml文件:

1 736366 summary
2 735444 another summary
5 735796 blah
Run Code Online (Sandbox Code Playgroud)

如何打印按照排序的行task['due_date']

这是一个示例xml文件:

<?xml version="1.0" encoding="utf-8"?>
<osmo_tasks version="000212">
  <category_entries/>
  <tasks_entries>

    <entry>
      <id>1</id>
      <status>1</status>
      <due_date>736366</due_date>
      <due_time>53100</due_time>
      <summary>summary</summary>
    </entry>

    <entry>
      <id>2</id>
      <status>1</status>
      <due_date>735444</due_date>
      <due_time>55800</due_time>
      <summary>another summary</summary>
    </entry>

    <entry>
      <id>5</id>
      <status>0</status>
      <due_date>735796</due_date>
      <due_time>55800</due_time>
      <summary>blah</summary>
    </entry>

  </tasks_entries>
</osmo_tasks>
Run Code Online (Sandbox Code Playgroud)

python sorting python-2.7

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

如何根据日期值将列表的元素插入另一个列表?

我有一份房屋清单:

list1 = [home1, home2, home3, home4]
Run Code Online (Sandbox Code Playgroud)

我还有另一份特定房屋清单:

list2 = [ home6, home7, home8, home10]
Run Code Online (Sandbox Code Playgroud)

每个家庭都有一个字段date.我想插入List2list1home.date

例如if home7.date < home1.date,so home7将被插入list1之前home1

我尝试使用两个for循环,但它似乎非常慢,并且CPU完成了许多计算

        for el in list1:
            for elt2 in list2:
                if el.date > elt2.date:
                    list1.insert((list1.index(el)),elt2)
Run Code Online (Sandbox Code Playgroud)

PS:一些日期未设置,使他们有一个None价值,我不想改变对应的索引homelist1

有任何想法吗 ?

python python-3.x

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

Python,如何排序对象列表?

我有一个看起来像这样的对象列表.

hand = [ Card(10, 'H'), Card(2,'h'), Card(12,'h'), Card(13, 'h'), Card(14, 'h') ]
Run Code Online (Sandbox Code Playgroud)

卡(10,'H)在这里不是元组,而是一个对象.我知道如果列表中的每个项目都是元组形式,如此排序,如何对此列表进行排序,

hand = sorted(hand, key = lambda x: x[0])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何对对象列表进行排序.我想按第一个输入值排序我的列表,这是Card()中的数字

我怎样才能做到这一点?

编辑:这是Card()的定义.

class Card(object):

    RANKS = (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)

    SUITS = ('C', 'D', 'H', 'S')

    def __init__(self, rank=12, suit='S'):

        if (rank in Card.RANKS):
            self.rank = rank
        else:
            self.rank = 12

        if (suit in Card.SUITS):
            self.suit = suit.upper()
        else:
            self.suit = 'S'

    def __str__(self):
        if (self.rank == 14): …
Run Code Online (Sandbox Code Playgroud)

python sorting object python-3.x

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

返回最小值的键

我想dictionary在 Python 中返回 a中最小值的键。key, value 对的值会有几个数字,即dict[current] = (total, gone, heuristic). 如何返回最小消失值的键?

python dictionary

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

类型错误:“节点”和“节点”实例之间不支持“&lt;”

我正在使用Python 3.8。我有以下清单:

[['Bangalore', 116.0], ['Mumbai', 132.0], ['Kolkata', 234.0]]
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个节点并添加到successors列表中,如下所示:

successors = [<__main__.Node object at 0x7f89582eb7c0>, <__main__.Node object at 0x7f89582eb790>, <__main__.Node object at 0x7f89582eb7f0>]
Run Code Online (Sandbox Code Playgroud)

我创建了一个边缘列表并添加每个后继节点。之后根据距离值对其进行排序。我收到错误 -'<' not supported between instances of 'node' and 'node'

for succ_node in successors:
    fringe.append(succ_node)
fringe.sort() <- Error Here
Run Code Online (Sandbox Code Playgroud)

这是我的节点类:

class Node:
    def __init__(self, parent, name, g):
        self.parent = parent
        self.name = name
        self.g = g
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python python-3.x

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

按属性排序对象列表

我试图在python中对对象列表进行排序,但是这段代码不起作用:

import datetime

class Day:
    def __init__(self, date, text):
        self.date = date
        self.text = text

    def __cmp__(self, other):
        return cmp(self.date, other.date)

mylist = [Day(datetime.date(2009, 01, 02), "Jan 2"), Day(datetime.date(2009, 01, 01), "Jan 1")]
print mylist
print mylist.sort()
Run Code Online (Sandbox Code Playgroud)

这个输出是:

[<__main__.Day instance at 0x519e0>, <__main__.Day instance at 0x51a08>]
None
Run Code Online (Sandbox Code Playgroud)

有人能告诉我解决这个问题的好方法吗?为什么sort()函数返回None

python

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

标签 统计

python ×7

python-3.x ×3

sorting ×3

colors ×1

dictionary ×1

object ×1

python-2.7 ×1