假设我有3个Python列表
l1 = [2, 5, 2, 4, 1]
l2 = [5, 1, 6, 3, 9]
l3 = [4, 9, 1, 8, 4]
我想获取列表名称,该列表名称的对应索引将具有最低的值。
喜欢0 th 索引
l1 = 2
,l2 = 4
和l3 = 4
在这种情况下,应用min
函数后,我将得到2作为答案。我想要的不是获取值,而是想要从中选择列表名称的列表(即本示例中的l1
)
我确实尝试过在for循环中使用min,但这仅给出了三个列表中的最小值,而无法获取列表名称
l1 = [2, 5, 2, 4, 1]
l2 = [5, 1, 6, 3, 9]
l3 = [4, 9, 1, 8, 4]
for i in range(len(l1)):
print(min(l1[i], l2[i], l3[i]))
我得到的输出:
2 1 1 3 1
因此,对于上面的示例,预期输出为l = [l1, l2, l3, l2, l1]
答案 0 :(得分:1)
没有干净,简单的方法可以在Python中以字符串形式访问变量的名称。有关讨论,请参见Getting the name of a variable as a string。
一种实现所需目标的方法是将名称显式存储在列表旁边:
lists = [
{
'name': 'l1',
'data': [2, 5, 2, 4, 1],
},
{
'name': 'l2',
'data': [5, 1, 6, 3, 9],
},
{
'name': 'l3',
'data': [4, 9, 1, 8, 4],
},
]
for idx in range(len(lists[0]['data'])):
compare = [
li['data'][idx]
for li
in lists
]
minval = min(compare)
minidx = compare.index(minval)
minname = lists[minidx]['name']
print(minname)
l1
l2
l3
l2
l1