如何根据属性值获取 class 中的项目列表
how to get list of items in a class based on their attribute value
class test:
def __init__(self, test):
self.name = test
m=1
class_items = {}
list = ['a', 'b', 'c', 'd', 'e', 'f']
for i in list:
class_items[i] = test(i)
class_items[i].value = m
m = m+1
class_items['e'].value
Out[2]: 5
class_items['a'].value
Out[3]: 1
我有一个测试 class,我在其中根据列表创建值。
我想获取列表中值大于 3 的列表项?或者列表项的排序列表...
如下所示:
sorted(class_items[*].value) <<< NEED THE RIGHT FUNCTION HERE
到return
['f', 'e', 'd', 'c', 'b', 'a']
或项目值超过 3:
sorted(class_items[*].value>3) <<< NEED THE RIGHT FUNCTION HERE
到return
['f', 'e', 'd']
print(sorted([k for k, v in class_items.items() if v.value > 3], reverse=True))
# ['f', 'e', 'd']
您需要使用 value
大于 3
的元素创建一个新的 list
,并将 reverse
标志设置为 True
。
另外:不要将您的 list
命名为 list
。它隐藏了内置 list
.
您可以使用列表理解来构建它。此外,您不应该将列表命名为 list
,因为它会覆盖内置名称,因此在此示例中我将您的 list
重命名为 known
。它包含完全相同的值 ['a', 'b', 'c', 'd', 'e', 'f']
,我只是想给它起一个更好的名字。
values = [i for i in known if class_items[i].value > 3]
这个returns['d', 'e', 'f']
。然后您可以按照您认为合适的方式对这个列表进行排序!反转它应该有效,就像在反转它之前对其进行排序一样。
试试这个:
class_items_sorted = sorted([key for key, val in class_items.items()], reverse=True)
class_items_filtered = sorted([key for key, val in class_items.items() if val.value>3], reverse=True)
print(class_items_sorted)
print(class_items_filtered)
输出:
['f', 'e', 'd', 'c', 'b', 'a']
['f', 'e', 'd']
class test:
def __init__(self, test):
self.name = test
m=1
class_items = {}
list = ['a', 'b', 'c', 'd', 'e', 'f']
for i in list:
class_items[i] = test(i)
class_items[i].value = m
m = m+1
class_items['e'].value
Out[2]: 5
class_items['a'].value
Out[3]: 1
我有一个测试 class,我在其中根据列表创建值。
我想获取列表中值大于 3 的列表项?或者列表项的排序列表...
如下所示:
sorted(class_items[*].value) <<< NEED THE RIGHT FUNCTION HERE
到return
['f', 'e', 'd', 'c', 'b', 'a']
或项目值超过 3:
sorted(class_items[*].value>3) <<< NEED THE RIGHT FUNCTION HERE
到return
['f', 'e', 'd']
print(sorted([k for k, v in class_items.items() if v.value > 3], reverse=True))
# ['f', 'e', 'd']
您需要使用 value
大于 3
的元素创建一个新的 list
,并将 reverse
标志设置为 True
。
另外:不要将您的 list
命名为 list
。它隐藏了内置 list
.
您可以使用列表理解来构建它。此外,您不应该将列表命名为 list
,因为它会覆盖内置名称,因此在此示例中我将您的 list
重命名为 known
。它包含完全相同的值 ['a', 'b', 'c', 'd', 'e', 'f']
,我只是想给它起一个更好的名字。
values = [i for i in known if class_items[i].value > 3]
这个returns['d', 'e', 'f']
。然后您可以按照您认为合适的方式对这个列表进行排序!反转它应该有效,就像在反转它之前对其进行排序一样。
试试这个:
class_items_sorted = sorted([key for key, val in class_items.items()], reverse=True)
class_items_filtered = sorted([key for key, val in class_items.items() if val.value>3], reverse=True)
print(class_items_sorted)
print(class_items_filtered)
输出:
['f', 'e', 'd', 'c', 'b', 'a']
['f', 'e', 'd']