Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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_List_Python 2.7_Dictionary_Tuples - Fatal编程技术网

Python 我有一个元组列表,我需要使用该值找到其中的最小值,如果值相同,我需要按键对它们进行排序 它为输入工作:

Python 我有一个元组列表,我需要使用该值找到其中的最小值,如果值相同,我需要按键对它们进行排序 它为输入工作:,python,list,python-2.7,dictionary,tuples,Python,List,Python 2.7,Dictionary,Tuples,4 普拉尚特 32 帕拉维 36 Dheeraj 39 希瓦姆 四十 预期o/p: 帕拉维 但当它的值相等时,它失败了: 5 哈利 37.21 浆果 37.21 蒂娜 37.2 阿克里蒂 41 刺耳的 三十九 O/P: 浆果 预期: 浆果 Harry我不是Python专家,但我正在尝试简化事情。例如,我不认为使用字典是必要的,如果它只是一个你想经常使用的简单功能的话 我只是创建我需要的函数作为lambda函数。前 # Enter your code here. Read input from S

4
普拉尚特
32
帕拉维
36
Dheeraj
39
希瓦姆
四十

预期o/p: 帕拉维

但当它的值相等时,它失败了: 5
哈利
37.21
浆果
37.21
蒂娜
37.2
阿克里蒂
41
刺耳的
三十九

O/P: 浆果

预期: 浆果

Harry

我不是Python专家,但我正在尝试简化事情。例如,我不认为使用字典是必要的,如果它只是一个你想经常使用的简单功能的话

我只是创建我需要的函数作为lambda函数。前

# Enter your code here. Read input from STDIN. Print output to STDOUT

    lst = list()
    name_grade = {}

    for i in range(int(raw_input())):

    name = raw_input()
    grade = float(raw_input())
    name_grade[name]= grade

tem = list()

for k,v in name_grade.items():
    tem.append((v,k))

sorted_list = sorted(tem)
second_low = min(sorted_list[1:])
T = tuple(second_low)
print T[1]
然后我会这样做,定义一个函数,你可以把学生人数作为一个值(“数字”),这将产生一些可用的输出。在本例中,我生成一个嵌套列表

f = lambda: raw_input("INPUT NAME: ")

g = lambda: input("INPUT GRADE: ")
对于我来说,现在输出的格式并不重要。嵌套列表,即列表中的列表可能很有用。对于某些事情,列表更好。字典对于其他东西来说是很好的,但是对于像这样的简单函数,我会尝试使用最简单的方法,以及最容易使用的方法进行排序等等。Python中还有其他数据类型,比如集合之类的。选择最适合当前问题的类型很重要

所以在运行之后,我得到的是:

seq = []

def names_grade(number):
    seq = []
    for i in range(number):
        seq.append([g(),f()])
    return seq
再说一次,我不是专家,但我做了类似的事情,定义一个函数给我最小的,在这种情况下只有2个输入,以后可以随时更改

>>> x = names_grade(2)
INPUT GRADE: 30
INPUT NAME: Alex
INPUT GRADE: 40
INPUT NAME: Marc
>>> x
[[30, 'Alex'], [40, 'Marc']]
这不是一个完整的“解决方案”,它更多的是一种看待和分析问题的方式,以试图找到最佳解决方案。。如果您愿意,我们会做一个概念清单,看看我们需要什么功能,什么值,什么类型的数据/值,等等。然后我们从那里开始构建。如果一开始就不能解决问题,那没关系。我们开始一部分一部分地构建它,并在每一步都进行测试,以确保它通过

在任何情况下,我认为对于这类问题,更“功能范式”或“风格”可能是有用的。只需定义您需要的函数,如lambda函数或诸如此类的“最小”函数,您需要的函数,然后您就可以使用“map”之类的东西

记住,地图的形式如下:

>>> smallest(x[0],x[1])
[30, 'Alex']
它将函数(“func”)应用于序列(“seq”)的每个项。因此,一旦你有了某种类型的“名称和等级”列表,你就可以使用map和你为手头的问题创建的任何函数。理想情况下,您可以用很少的代码行完成这一切。您也可以使用“函数组合”,通常您使用的函数都是一行程序,我发现更具可读性。添加docstring或其他形式的文档,以适当的详细程度描述函数的功能、它接受的输入(和输入类型)、它执行的操作以及它产生的输出(和输出类型)

最后,这几乎是我在Stackoverflow上回答的第一个问题,所以我希望我没有违反任何规则。请不要对我太苛刻,我只是来帮忙的,而不是因为不知道如何写正确的答案而受到个人攻击。大家好

*编辑:在过去的几个小时里,我一直在思考这个问题,我想我可能找到了解决办法。只要按等级对元组排序,如果两个等级相同,名称将按字母顺序排列。前

r = map(func, seq)
我不明白的是,为什么原始程序的结构是这样的。这对我来说似乎相当深奥,几乎深奥。在我上面给出的示例中,如果您想要第二个值,那么只需在排序后在第二个值处建立索引。前

>>> names_grades_tuple = [
    ('alex', 15),
    ('jane', 20),
    ('david', 19),
    ('john', 15),
]

>>> sorted(names_grades_tuple, key=lambda grade: grade[1])
[('alex', 15), ('john', 15), ('david', 19), ('jane', 20)]
这些有意义吗?我想也许我不太明白这个问题。对不起,我在这里浪费了任何人的时间

**编辑2:使用这个参考(参考),我找到了另一种方法。创建一个类,用名称、等级对其进行实例化。。然后使用操作员模块。前

>>> sorted_tuples = sorted(names_grades_tuple, key=lambda grade: grade[1])
>>> print sorted_tuples[1]
('john', 15)

诀窍在于使用attrgetter,您可以在多个级别上进行排序。在这里,我按年级和姓名进行分类。这不是被问到的问题吗?

我不是Python专家,但我正在考虑简化事情。例如,我不认为使用字典是必要的,如果它只是一个你想经常使用的简单功能的话

我只是创建我需要的函数作为lambda函数。前

# Enter your code here. Read input from STDIN. Print output to STDOUT

    lst = list()
    name_grade = {}

    for i in range(int(raw_input())):

    name = raw_input()
    grade = float(raw_input())
    name_grade[name]= grade

tem = list()

for k,v in name_grade.items():
    tem.append((v,k))

sorted_list = sorted(tem)
second_low = min(sorted_list[1:])
T = tuple(second_low)
print T[1]
然后我会这样做,定义一个函数,你可以把学生人数作为一个值(“数字”),这将产生一些可用的输出。在本例中,我生成一个嵌套列表

f = lambda: raw_input("INPUT NAME: ")

g = lambda: input("INPUT GRADE: ")
对于我来说,现在输出的格式并不重要。嵌套列表,即列表中的列表可能很有用。对于某些事情,列表更好。字典对于其他东西来说是很好的,但是对于像这样的简单函数,我会尝试使用最简单的方法,以及最容易使用的方法进行排序等等。Python中还有其他数据类型,比如集合之类的。选择最适合当前问题的类型很重要

所以在运行之后,我得到的是:

seq = []

def names_grade(number):
    seq = []
    for i in range(number):
        seq.append([g(),f()])
    return seq
再说一次,我不是专家,但我做了类似的事情,定义一个函数给我最小的,在这种情况下只有2个输入,以后可以随时更改

>>> x = names_grade(2)
INPUT GRADE: 30
INPUT NAME: Alex
INPUT GRADE: 40
INPUT NAME: Marc
>>> x
[[30, 'Alex'], [40, 'Marc']]
这不是一个完整的“解决方案”,它更多的是一种看待和分析问题的方式,以试图找到最佳解决方案。。如果您愿意,我们会做一个概念清单,看看我们需要什么功能,什么值,什么类型的数据/值,等等。然后我们从那里开始构建。如果一开始就不能解决问题,那没关系。我们开始一部分一部分地构建它,并在每一步都进行测试,以确保它通过

在任何情况下,我认为对于这类问题,一个更“函数”