Python dict append覆盖了以前的key:value

时间:2016-07-07 18:23:23

标签: python python-2.7 dictionary

首先是python 2.7.11

概述,我正在收集给定路径中的目录名称并将它们传递给子进程cmd。从那个子流程我逐行迭代输出,目录名是键,subprocess.stdout是值。

我需要的是保持密钥相同但保存唯一值并将它们添加到dict中,以便稍后我可以写入csv。

显示代码,显示我已经尝试过的两种方法(一种是注释掉的)。两者都覆盖了现有的key:dict中的值。

data = []
for dname in listdir(path):
    header = dname
    if isfile:
        entrydict = dict()
        cmd = "ct lsh -fmt \"%u \\n\" -since 01-Oct-2015 -all " + dname
        # output of cmd is "name \r\n"
        p1 = subp.Popen(cmd, stdout=subp.PIPE, stderr=subp.PIPE)
        usr = []
        for name in iter(p1.stdout.readline, ''):
            if name.rstrip() not in usr:
                usr.append(name.rstrip())
            else:
                entrydict[header] = usr

        for n in usr:
            entrydict[header] = n
            data.append(entrydict)

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,您可以将所有唯一值收集为names = ['f0', 'f1', 'f2']之类的列表,然后将header作为关键字分配给您的词典

entrydict[header] = names

确保所有header都不同。