如何使用Python语言中的名称获取列表中的数据?
例如,在C语言中如何使用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
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提供了最大限度的灵活类生成功能。