为什么python附加到我的字典中的所有键?

时间:2016-09-06 08:38:57

标签: python python-3.x

我有一个Excel文件,其值如此( - 作为分隔符)

14:32:01--500--TEST--USER

14:32:24--500--TEST--USER

14:32:31--500--TEST--USER2

14:34:06--200--TEST--USER2

14:34:15--200--TEST--USER2

14:41:25--342--TEST--USER3

这种情况持续了数千行(大约4000行),我想知道每分钟有多少不同的用户。因此,对于14:32分钟,将有2个不同的用户,并且对于14:34,只有一个用户(即使该分钟有两个用户,那里只有一个用户)。

所以我的python程序将打开excel作为系统参数,然后获取所有唯一的分钟(通过忽略时间戳的第二部分),然后生成一个字典,其值为每个唯一分钟的空字典。 / p>

然后我返回并遍历所有行,并尝试将每个用户附加到该分钟键,但是当我这样做时,它会将其附加到所有键...什么?

有人可以指出我正确的方向,或解释发生了什么?我知道我的代码很糟糕,并且有很多冗余(即多次循环同一个东西)然而我只是想让它工作

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.compat import range
from string import ascii_lowercase
import time
import datetime
import sys, os.path
import re
import math
import string
import json
import csv

minutes = []
unique_min_list = []
unique_min_dict = {}

data_book = load_workbook(filename = sys.argv[1], read_only=False)
data_sheet = data_book['merged']

def uniq(input):
    output = []
    for x in input:
        if x not in output:
            output.append(x)
    return output

def iter_rows(sheet):
    for row in sheet.iter_rows():
        yield [cell.value for cell in row]

data = list((iter_rows(data_sheet)))

for rows in data:
    date_val = str(rows[0])[:5]
    minutes.append(date_val)

unique_min_list = uniq(minutes)
unique_min_dict = dict.fromkeys(unique_min_list, [])

print(str(unique_min_dict))
print(str(len(unique_min_dict)))

loop_count = 0
for rows in data:
    if loop_count >= 10:
        break
    loop_count += 1
    date_val = str(rows[0])[:5]
    user = str(rows[3])
    print(user)
    if user not in unique_min_dict[date_val]:
        unique_min_dict[date_val].append(user)

    print(str(unique_min_dict))
    time.sleep(5) #for debug purposes


for k, v in unique_min_dict.items():
    unique_min_dict_x[k] = uniq(v)
    unique_min_dict_x[k] = str(len(v))


with open('my_file.csv', 'w') as f:
    [f.write('{0},{1}\n'.format(key, value)) for key, value in unique_min_dict.items()]

0 个答案:

没有答案