Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定哪个列表在多个列表中具有最多的最小值_Python - Fatal编程技术网

Python 确定哪个列表在多个列表中具有最多的最小值

Python 确定哪个列表在多个列表中具有最多的最小值,python,Python,我有以下问题。我有两个k元素的列表。我需要决定哪里是最小值。 例k=5 我需要选择a,因为在属于a的第一个k位置上有更多的最小值 我试图对每个位置上的值进行排序和比较,但在这种情况下,它不起作用。我将非常感谢您的任何意见。这里有一个非常基本的版本,可以帮助您开始学习。您可以将此作为解决实际问题的起点 这里的主要成分是使用heapq.nsmallest和collections.Counter nsmallest函数从列表中查找n最小数字(在本例中,是a和b列表的并集) 使用计数器可以更容易地找出

我有以下问题。我有两个k元素的列表。我需要决定哪里是最小值。 例k=5

我需要选择a,因为在属于a的第一个k位置上有更多的最小值


我试图对每个位置上的值进行排序和比较,但在这种情况下,它不起作用。我将非常感谢您的任何意见。

这里有一个非常基本的版本,可以帮助您开始学习。您可以将此作为解决实际问题的起点

这里的主要成分是使用
heapq.nsmallest
collections.Counter

  • nsmallest
    函数从列表中查找
    n
    最小数字(在本例中,是
    a
    b
    列表的并集)

  • 使用
    计数器
    可以更容易地找出那些
    n
    最小数字的来源

首先,调用
nsmallest
获取数字列表,并将其转换为
计数器
对象-

import heapq
from collections import Counter

ctr = Counter(heapq.nsmallest(5, a + b))    
print(ctr)
Counter({0: 2, 1: 1, 2: 1, 3: 1})
接下来,您可以对
计数器
对象执行算术运算。因此,要从
b
中找到最小值的计数,请从
ctr
中减去
计数器(a)
。相应地,要从
a
中获得最小值的计数,请减去先前从
5
中获得的结果(
n


计数
告诉您每个列表中有多少个最小值。用它来确定最小值的最大数量。

你在说什么?你所说的“在属于a的第一个k-位置上有更多的最小值”是什么意思?将元素成对匹配,b有3个较小的元素,a有两个,所以不是这样。两个列表中的最小元素都是0,所有0都在b中,所以也不是这样。你想问什么?3最小的元素属于。。。两个列表中最小的元素只有0和k=5。对于两个列表中的5个最小值,找出哪个列表中的元素更多。应如何处理关系?如果99是另一个3,结果会是什么?如果99和7都是3呢?
import heapq
from collections import Counter

ctr = Counter(heapq.nsmallest(5, a + b))    
print(ctr)
Counter({0: 2, 1: 1, 2: 1, 3: 1})
counts = {'b' : sum((ctr - Counter(a)).values())}
counts['a'] = 5 - counts['b']

print(counts)
{'a': 3, 'b': 2}