Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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_Python 3.x - Fatal编程技术网

如何使用Python语言中的名称获取列表中的数据?

如何使用Python语言中的名称获取列表中的数据?,python,python-3.x,Python,Python 3.x,例如,在C语言中 typedef struct People_S { int age; int grade; }People; People tmp[10] = {0}; 然后我可以使用tmp[0].grade访问数据 然而,在Python中,我没有理想的方法。如果使用列表tmp=[[10,60],[11,50],我可以通过tmp[0][1]获得等级。但是太多的魔法数字不利于阅读 谢谢你的帮助 如果您对在列表上使用迭代很满意,那么如果您不喜欢完整的类,还可以使用字典: dic

例如,在C语言中

typedef struct People_S
{
    int age;
    int grade;
}People;

People tmp[10] = {0};
然后我可以使用
tmp[0].grade
访问数据

然而,在Python中,我没有理想的方法。如果使用列表
tmp=[[10,60],[11,50]
,我可以通过
tmp[0][1]
获得
等级。但是太多的魔法数字不利于阅读


谢谢你的帮助

如果您对在列表上使用迭代很满意,那么如果您不喜欢完整的类,还可以使用字典:

dictList = []
for i in range(5):
    dictList.append({"age":i+10,"grade": i//3})

print(dictList)
print( dictList[2]["grade"], dictList[2]["age"] )

for e in dictList:
    print(e)
输出:

[{'grade': 0, 'age': 10}, {'grade': 0, 'age': 11}, {'grade': 0, 'age': 12}, 
 {'grade': 1, 'age': 13}, {'grade': 1, 'age': 14}]

(0, 12)

{'age': 10, 'grade': 0}
{'age': 11, 'grade': 0}
{'age': 12, 'grade': 0}
{'age': 13, 'grade': 1}
{'age': 14, 'grade': 1}
Age 10 Grade 0
Age 11 Grade 0
Age 12 Grade 0
Age 13 Grade 1
Age 14 Grade 1
或上述类别(请参阅):

输出:

[{'grade': 0, 'age': 10}, {'grade': 0, 'age': 11}, {'grade': 0, 'age': 12}, 
 {'grade': 1, 'age': 13}, {'grade': 1, 'age': 14}]

(0, 12)

{'age': 10, 'grade': 0}
{'age': 11, 'grade': 0}
{'age': 12, 'grade': 0}
{'age': 13, 'grade': 1}
{'age': 14, 'grade': 1}
Age 10 Grade 0
Age 11 Grade 0
Age 12 Grade 0
Age 13 Grade 1
Age 14 Grade 1

如果您对在列表上使用迭代很满意,那么如果您不喜欢完整的类,还可以使用字典:

dictList = []
for i in range(5):
    dictList.append({"age":i+10,"grade": i//3})

print(dictList)
print( dictList[2]["grade"], dictList[2]["age"] )

for e in dictList:
    print(e)
输出:

[{'grade': 0, 'age': 10}, {'grade': 0, 'age': 11}, {'grade': 0, 'age': 12}, 
 {'grade': 1, 'age': 13}, {'grade': 1, 'age': 14}]

(0, 12)

{'age': 10, 'grade': 0}
{'age': 11, 'grade': 0}
{'age': 12, 'grade': 0}
{'age': 13, 'grade': 1}
{'age': 14, 'grade': 1}
Age 10 Grade 0
Age 11 Grade 0
Age 12 Grade 0
Age 13 Grade 1
Age 14 Grade 1
或上述类别(请参阅):

输出:

[{'grade': 0, 'age': 10}, {'grade': 0, 'age': 11}, {'grade': 0, 'age': 12}, 
 {'grade': 1, 'age': 13}, {'grade': 1, 'age': 14}]

(0, 12)

{'age': 10, 'grade': 0}
{'age': 11, 'grade': 0}
{'age': 12, 'grade': 0}
{'age': 13, 'grade': 1}
{'age': 14, 'grade': 1}
Age 10 Grade 0
Age 11 Grade 0
Age 12 Grade 0
Age 13 Grade 1
Age 14 Grade 1

除了类或字典之外的另一个选项是
namedtuple

>>> from collections import namedtuple
>>> People = namedtuple('People','age grade')
>>> People(10,60)
People(age=10, grade=60)
>>> p = People(10,60)
>>> p.age
10
>>> p.grade
60
填充
人员
列表的方法:

>>> tmp = [[10,60],[11,50]]
>>> p = [People(age,grade) for age,grade in tmp]
>>> p
[People(age=10, grade=60), People(age=11, grade=50)]

除了类或字典之外的另一个选项是
namedtuple

>>> from collections import namedtuple
>>> People = namedtuple('People','age grade')
>>> People(10,60)
People(age=10, grade=60)
>>> p = People(10,60)
>>> p.age
10
>>> p.grade
60
填充
人员
列表的方法:

>>> tmp = [[10,60],[11,50]]
>>> p = [People(age,grade) for age,grade in tmp]
>>> p
[People(age=10, grade=60), People(age=11, grade=50)]

请参见Python3.7Pythonhas类的数据类
class Person:\n def\uuuu init\uuuuu(self,age,grade):self.age,self.grade=age,grade
请参见python 3.7Python的数据类<代码>班级人员:\n def\uuuu init\uuuuu(self,age,grade):self.age,self.grade=age,grade
我喜欢命名倍数:易于设置,易于使用,非常清晰。如果您的程序变得越来越复杂,您可能会很高兴将命名元组转换为类也很容易。不知道命名元组-很好的功能。注意:
namedtuple
s是类,它们只是Python为您生成的类(该子类
tuple
提供不变性保证和互操作性)。另外请注意,从3.5开始,就有了一个集合的替代品。namedtuple允许安全键入,并在3.6中增加了更多的灵活性,这反过来又为3.7铺平了道路,3.7提供了最大限度的灵活类生成功能。我喜欢namedtuple:易于设置、易于使用、非常清晰。如果您的程序变得越来越复杂,您可能会很高兴将命名元组转换为类也很容易。不知道命名元组-很好的功能。注意:
namedtuple
s是类,它们只是Python为您生成的类(该子类
tuple
提供不变性保证和互操作性)。还请注意,从3.5开始,有一个集合.namedtuple的替代品,它允许安全键入,并在3.6中增加了更多的灵活性,这反过来又为3.7铺平了道路,3.7提供了最大限度的灵活类生成功能。