繁体   English   中英

如何根据列对嵌套列表进行排序?

[英]How to sort a nested list based on a column?

我正在尝试按 output 对列表entry的 output 进行排序:

itemTypes = ['phone','tower','laptop']
num = range(len(itemTypes))
for y in num:
    for row, entry in inventory.items():
        entry = [row] + entry
        for line in entry:
            if itemTypes[y] in line:
                print(entry)

这是我从上面的代码中得到的 output 是:

['3001265', 'Samsung', 'phone', '1200', '12/1/2023', '']
['1167234', 'Apple', 'phone', '534', '2/1/2021', '']
['1009453', 'Lenovo', 'tower', '599', '10/1/2020', '']
['9034210', 'Dell', 'tower', '345', '5/27/2020', '']
['2390112', 'Dell', 'laptop', '799', '7/2/2020', '']
['7346234', 'Lenovo', 'laptop', '239', '9/1/2020', 'damaged']
['2347800', 'Apple', 'laptop', '999', '7/3/2020', '']

当我尝试将entry = sorted(entry, key=lambda x: int(x[0]))添加到代码中以按第一个元素排序时

if itemTypes[y] in line: 
    entry = sorted(entry, key=lambda x: int(x[0])) 
    print(entry)

我收到此错误:

  File "C:/Users/Project/test.py", line 29, in <lambda>
entry = sorted(entry, key=lambda x: int(x[0]))
ValueError: invalid literal for int() with base 10: 'S'

所以我尝试在没有int() function 的情况下对 function 进行排序,我得到了这个错误: IndexError: string index out of range

您需要先列出条目,然后对其进行排序:

itemTypes = ['phone','tower','laptop']
num = range(len(itemTypes))
entry_list = []
for y in num:
    for row, entry in inventory.items():
        entry = [row] + entry
        for line in entry:
            if itemTypes[y] in line:
                entry_list.append(entry)
                print(entry)

sorted_entry = sorted(entry_list, key=lambda x: int(x[0]))

像这样的东西。

就像大家提到的,你首先需要列出条目,然后排序

itemTypes = ['phone','tower','laptop']
entries = []
for item_id, row in inventory.items():
    if row[1] in itemTypes:
        entries.append([item_id] + row)
print(sorted(entries, key=lambda x: int(x[0])))

单线:

itemTypes = ['phone','tower','laptop']
sorted([[row] + entry for row, entry in inventory.items() if entry[1] in itemTypes], key=lambda x: int(x[0]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM