python字典元组中的索引
我有一个元组,它的元素是字典。i、 epython字典元组中的索引,python,indexing,Python,Indexing,我有一个元组,它的元素是字典。i、 e tuple=({"code":101,"assignment":'math',"credits":2}, {"code":102,"assignment":'physics',"credits":3}, {"code":103,"assignment":'chemistr
tuple=({"code":101,"assignment":'math',"credits":2},
{"code":102,"assignment":'physics',"credits":3},
{"code":103,"assignment":'chemistry',"credits":2},
{"code":104,"assignment":'biology',"credits":5},
{"code":105,"assignment":'science',"credits":1}
然后我想检查每个学生有多少学分,但首先我想列出每个代码所在的索引
student1=[101,103]
student2=[102,104,105]
所以我想要
student1list=[1,3]
student1credits=4
student2list=[2,4,5]
student2credits=9
像这样,我可以得到2分的学分
s1=[]
for i in range(len(student1)) :
for j in range(len(tuple)) :
if student1[i]==tuple[j]['code'] :
s1.append(tuple[j]['credits'])
student1credits=0
for k in range(len(s1)):
student1credits=student1credits+s1[k]
print(student1credits)
但是不知道如何获取索引您可以使用列表理解和
枚举
tuple_credits=({“代码”:101,“作业”:“数学”,“学分”:2},{“代码”:102,“作业”:“物理”,“学分”:3},{“代码”:103,“作业”:“化学”,“学分”:2},{“代码”:104,“作业”:“生物学”,“学分”:5},{“代码”:105,“作业”:“科学”,“学分”:1})
code_to_idx={x['code']:i代表i,x在枚举(tuple_credits)}
def idx_和_学分(学生):
idx=[学生中c的代码\u到\u idx[c]
cred=总和(idx中i的元组_积分[i]['credits']
返回idx,cred
学生1名单,学生1信用=idx和IDU信用([101103])
student2list,student2credits=idx_和_学分([101,103,101,105])
打印(学生名单、学生信用证)#[0,2]4
打印(学生2列表,学生2信用)#[0,2,0,4]7
在Python中,索引以0开头,因此
student1list
将是[0,2]
,而不是[1,3]
。另外,我将tuple
重命名为tuple\u credits
,因为tuple
是一个内置函数。这感觉就像熊猫帮了大忙一样
将熊猫作为pd导入
元组=({“代码”:101,“赋值”:“数学”,“学分”:2},
{“代码”:102,“作业”:“物理”,“学分”:3},
{“代码”:103,“作业”:“化学”,“学分”:2},
{“代码”:104,“作业”:“生物学”,“学分”:5},
{“代码”:105,“作业”:“科学”,“学分”:1})
my_data=pd.DataFrame(元组)
my_data.head()
代码
分配
信用
0
101
数学
2.
1.
102
物理学
3.
2.
103
化学
2.
3.
104
生物学
5.
4.
105
科学
1.
您可以像so
pd.DataFrame(tuple,index=pd.RangeIndex(start=1,stop=len(tuple),name='index'))那样将索引传递给数据帧
,
如果他们真的想要一个基于1的索引,就不要将tuple
用作变量名,因为它是python语言中的内置项,覆盖其值将导致问题,实际上这几乎就是我需要的,但是如果我有一个代码在学生列表中出现了两次呢?我想在学生名单和学生学分总数中都有吗?@SebasRoldan很抱歉我不理解你的要求。我知道在这个例子中它不合适,但是让我们假设学生=[101103101105],然后学生名单=[0,2,0,4]和学生学分=7Ah现在我明白你的意思了。我会编辑这篇文章。