我有一个以列表列表形式表示的表:
table = [[1, 9695],[2, 4755],[6,447]]
和另一个列表,其中包含上表中第二列的值,其中数字按升序排列。
lst = [447,4755,9695]
我正在尝试在lst中打印值,因为它已经按升序排列,而不是仅仅打印出这些值:
447
4755
9695
我想让表格的第一列的值与它一起打印:
No: 6 Total distance travelled: 447
No: 2 Total distance travelled: 4755
No: 1 Total distance travelled: 9695
我尝试过类似的事情:
n = len(lst)
for i in range(n):
if table[i][1] == lst[i]:
print("No: " + str(table[i][0]) + " " + "Total distance
travelled: " + str(lst[i]))
但它只打印出某些值,但不是全部打印出来。我将不胜感激。 请注意,我不建议使用任何内置函数,例如lambda 等,但只是类似于我写的内容。
答案 0 :(得分:1)
创建包含table[n][1]
值的“临时”列表,并将其与index
一起使用以查找lst
值。
for i in range(len(lst)):
print ('No %d Distance %4d' % (table[[x[1] for x in table].index(lst[i])][0], table[[x[1] for x in table].index(lst[i])][1]))
输出:
No 6 Distance 447
No 2 Distance 4755
No 1 Distance 9695
效率不高,因为它为每一行重新创建了重新排序的列表两次,但也许你可以创建一个临时列表来存储它:
l = [x[1] for x in table]
for i in range(len(lst)):
print ('No %d distance %4d' % (table[l.index(lst[i])][0],table[l.index(lst[i])][1]))
(相同的输出。)
答案 1 :(得分:0)
使用字典是一种解决方案:
table = [[1, 9695],[2, 4755],[6,447]]
lst = [447,4755,9695]
d = {v: k for k, v in table}
for i in lst:
print('No: {0} Total distance travelled: {1}'.format(d[i], i))
# No: 6 Total distance travelled: 447
# No: 2 Total distance travelled: 4755
# No: 1 Total distance travelled: 9695
答案 2 :(得分:0)
你在这里问的根本问题是:
if table[i][1] == lst[i]:
您没有检查每个表条目,您只是检查碰巧与当前列表条目具有相同索引的那个。因此,对于447
,您只需检查[1, 9695]
是否与447
匹配,而不是for i in range(n):
for j in range(n):
if table[j][1] == lst[i]:
。
如果你真的想以这种方式做事,你需要另一个循环:
for entry in lst:
有很多方法可以改善这一点 - 只需使用for i in range(n)
代替lst[i]
然后使用table
,然后将dict
替换为list
代替一个#picture {
position: absolute;
}
#container {
width: 750px;
height: 100px;
}
,等等。
此外,您还需要在代码中修复至少一个其他错误。
但是,这将使你能够以一种你可以理解的方式提出关于工作的部分。
答案 3 :(得分:0)
字典或只是简单地对列表进行排序:
table = [[1, 9695],[2, 4755],[6,447]]
lst = [447,4755,9695]
table_sorted = sorted(table, key=lambda alist: alist[1])
for x in table_sorted:
print('{0} ... {1}'.format(x[0], x[1]))
答案 4 :(得分:0)
您不需要该列表。您可以根据需要使用itemgetter对表进行排序。
from operator import itemgetter
table = [[1, 9695],[2, 4755],[6,447]]
sorted_list = sorted(table, key=itemgetter(1))
print(sorted_list)
输出:
[[6, 447], [2, 4755], [1, 9695]]
简单地说:
for item in sorted_list:
print("No: " + str(item[0]) + " Total distance travelled: " + str(item[1]))
输出:
No: 6 Total distance travelled: 447
No: 2 Total distance travelled: 4755
No: 1 Total distance travelled: 9695