【问题标题】:How to append items to a list inside a dictionary at specific index locations of the list?如何在列表的特定索引位置将项目附加到字典内的列表中?
【发布时间】:2021-10-02 23:56:14
【问题描述】:

我有一个名为 data 的字典,看起来像这样:

{'Annou1_date': [NoneType,NoneType,....], 'Appro2_date': [NoneType,NoneType,....], 'Appro3_date': [NoneType,NoneType,....]}

而且,我想在索引 1 处更新 Appro2_date 的列表,这样我的字典就会:

{'Annou1_date': [NoneType,NoneType,....], 'Appro2_date': [NoneType,22nd July 2021,....], 'Appro3_date': [NoneType,NoneType,....]}

我该怎么做?

我试过了:

#RECRUITMENT PRE-PROCESSING SCRIPT
import pandas as pd
import numpy as np
import math

#Reading report file
df1 = pd.read_excel("C:/Users/INT011/Desktop/WorkFlows/Dashboards/Recruitment Workflow/Recruitment Workflow Tasks.xlsx") 
df1 = df1.sort_values(by=["Workflow ID","Task ID"], ascending=True)
wf_id,tk_id,tk_name,sd,ed,delay,st,category,assignee,ini,can_name,can_desig,hod,posi,dept,jb_num,qty,ddj,fdj,lk \
    = df1['Workflow ID'].tolist(),df1['Task ID'].tolist(),df1['Task Name'].tolist(),df1['Start Date'].tolist(),df1['End Date'].tolist(),df1['Delay(Days)'].tolist(),df1['Status'].tolist(), \
        df1['Category'].tolist(),df1['Assignee Name'].tolist(),df1['Initiator'].tolist(),df1['Name Of Candidate'].tolist(),df1['Candidate Designation'].tolist(),df1['HOD Selection'].tolist(), \
            df1['Position'].tolist(),df1['Department'].tolist(),df1['Project Number'].tolist(),df1['Quantity'].tolist(),df1['Desired Date Of Joining'].tolist(),df1['Final Date Of Joining'].tolist(), \
                df1['Alfresco Link'].tolist()
sd = pd.to_datetime(df1['Start Date'])
df1['End Date'] = pd.to_datetime(df1['End Date'])
df1['Min Date'] = df1.groupby(['Workflow ID', 'Task Name'])['End Date'].transform('min')
df1['Max Date'] = df1.groupby(['Workflow ID','Task Name'])['End Date'].transform('max')
firstdate = df1['Min Date'].tolist()
lastdate = df1['Max Date'].tolist()
tasklist = np.unique(tk_name)
t = len(tasklist)
task_var_names = [str()]*t
for i in range(t):
    task_var_names[i] = tasklist[i][0:5]+str(i+1)+"_date"
    
#New Columns for Output File
a = len(wf_id)
x=np.array(wf_id)
x=np.unique(wf_id)
b=len(x)

data = dict((task_var_names[i], [None]*b) for i in range(t))

runnintask,status,ct,initiator,HOD,jb,alflink = [str()]*b,[str()]*b,[str()]*b,[str()]*b,[str()]*b,[str()]*b,[str()]*b

for i in range(0,b):
    for j in range(0,a):        
        if x[i] == wf_id[j]:
            alflink[i] = lk[j]
            ct[i] = category[j]
            for k in range(t):
                if tk_name[j] == tasklist[k]:
                    data[task_var_names[k]] = ed[j]

但它用单个值替换列表,例如:

{'Annou1_date': '17-Jul-2021', 'Appro2_date': '24-Jul-2021', 'Appro3_date': '22-Jul-2021'}

【问题讨论】:

  • 请添加完整代码。这个两行的小sn-p没有多大帮助。
  • 添加完整代码

标签: python dictionary indexing append


【解决方案1】:
  • 从字典中,获取Appro2_date 的值,即list
  • 现在在您想要的索引处更新list

lst[index] = new_value

d = {'Annou1_date': [None,None], 'Appro2_date': [None,None,None], 'Appro3_date': [None,None,None]}
date_str = '22nd July 2021'

# Updating the list. Modify data at index - 1
d['Appro2_date'][1] = date_str

print(d)
{'Annou1_date': [None, None], 'Appro2_date': [None, '22nd July 2021', None], 'Appro3_date': [None, None, None]}

【讨论】:

  • 我不想手动放置索引。我想使用索引是变量的for循环来做到这一点
  • 然后运行 ​​for 循环并更新值 - d['Appro2_date'][idx] = value。其中idx 是一个变量。您还需要检查idx 是否小于列表的长度。
猜你喜欢
  • 2020-08-19
  • 2018-05-24
  • 1970-01-01
  • 2014-09-17
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
相关资源
最近更新 更多