[英]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.