python字典元组中的索引

python字典元组中的索引,python,indexing,Python,Indexing,我有一个元组,它的元素是字典。i、 e tuple=({"code":101,"assignment":'math',"credits":2}, {"code":102,"assignment":'physics',"credits":3}, {"code":103,"assignment":'chemistr

我有一个元组,它的元素是字典。i、 e

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现在我明白你的意思了。我会编辑这篇文章。