遍历不同的python字典-错误的结果?

时间:2019-06-05 18:40:49

标签: python dictionary

我正在使用Python 2.7,顺便说一句。

假设我有几个目录,我想为其创建字典。每个目录中的文件名为YYYYMMDD.hhmmss,并且都不同,并且每个目录的大小也不同:

 path1 = /path/to/folders/to/make/dictionaries
 dir1 = os.listdir(path1)

我还有另一个静态目录,其中包含一些要比较的文件

 gpath1 = /path/to/static/files
 gdir1 = os.listdir(gpath1)
 dir1_file_list = [datetime.strptime(g, '%Y%m%d.%H%M%S') for g in gdir1]

所以我在gdir2中有一个文件的静态目录,现在我想遍历dir1中的每个目录并创建一个唯一的字典。这是代码:

 for i in range(0,len(dir1)):
    path2 = path1 + "/" + dir1[i]
    dir2 = os.listdir(path2)
    dir2_file_list = [datetime.strptime(r, '%Y%m%d.%H%M%S') for r in dir2]

    # Define a dictionary, and initialize comparisons
    dict_gr = []
    dict_gr = dict()
    for dir1_file in dir1_file_list:
        dict_gr[str(dir1_file)] = []

        # Look for instances within the last 5 minutes
        for dir2_file in dir2_file_list:
            if 0 <= (dir1_file - dir2_file).total_seconds() <= 300:
                dict_gr[str(dir1_file)].append(str(dir2_file))    

        # Sort the dictionaries
    for key, value in sorted(dict_gr.iteritems()):
        dir2_lib.append(key)
        dir1_lib.append(sorted(value))

问题在于path2和dir2都可以正确地转到不同的文件夹并获取必要的文件名,并且创建dict_gr都可以正常工作。但是,当我转到对字典进行排序的脚本部分时,已循环的第二个目录将包含第一个目录的内容。第三个循环字典将包含第1个和第2个等的内容。换句话说,它们并不是每个目录都唯一匹配。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

忽略初始化dir2_lib和dir1_lib的附加内容。