我正在尝试创建一个python脚本,并且卡住了字典。我已经阅读了其他一些论坛,但似乎无法找到任何地方。我是一个非常新的Python程序员,所以请温和。将列表值添加到字典键
我想要做什么:
1)建立这样一个字典:{'Name':'userid','jobid:jobid','walltime:walltime,'nodes:nds'}
2)通过从创建的条目和外部函数调用的列表迭代和提取信息来填充字典
3)问题:我无法弄清楚如何添加条目到合适的键
例如,我想这一点:
{‘Name’:’jose’,’jobid’:’001,002,003,005’,’walltime:32:00,240:00,04:00,07:00’,’nodes’:32,32,500’}
注意一个用户ID,我有多个jobids,walltimes和节点。
(len(jobids)==len(walltimes)==len(nodes)
对于任何一个用户ID,但可以在用户ID会发生变化)
我能够拿到剧本找到每个用户名的第一个值,但它永远不会追加。我怎样才能得到这个追加?
这是我曾尝试
from collections import defaultdict
pdict = defaultdict(list)
start the loop:
# get new values – add these to the dictionary keyed
# on username (create a new entry or append to existing entry)
…
(jobid,userid,jobname, sessid, nds, tsk, walltime,rest)= m.groups()
...
if userid in pdict:
print "DEBUG: %s is currently in the dictionary -- appending entries" %(userid)
pdict[userid][‘jobid’] = pdict[userid][jobid].append(jobid) I
# repeat for nodes, walltime, etc
if not userid in pdict:
print "DEBUG: %s is not in the dictionary creating entry" %(userid)
pdict[userid] = {} # define a dictionary within a dictionary with key off userid
pdict[userid]['jobid'] = jobid
pdict[userid]['jobname'] = jobname
pdict[userid]['nodes'] = nds
pdict[userid]['walltime'] = walltime
我知道这是错误的,但无法弄清楚如何获得追加的工作。我已经尝试了许多在这个网站上提供的建议。我需要追加(字典中)从循环中键入的最新值
以下是输出示例 - 它不为每个用户标识附加多个条目,而是仅为每个用户标识添加第一个值
userid jmreill contains data: {'nodes': '1', 'jobname': 'A10012a_ReMig_Q', 'walltime': '230:0', 'jobid': '1365582'}
userid igorysh contains data: {'nodes': '20', 'jobname': 'emvii_Beam_fwi6', 'walltime': '06:50', 'jobid': '1398100'}
有什么建议吗?这应该很容易,但我无法弄清楚!
您是否收到错误消息?也许'AttributeError:'str'对象没有属性'append''?你必须为保存多个值的键创建列表,然后你可以'append()'。所以像'pdict [userid] ['jobid'] = [jobid]' – Jasper
这样的东西,如果userid不在pdict而不是'if userid in pdict'中, – SparkAndShine