我有两个字典,它们存储产品ID作为键,并存储时间戳作为值。问题是我重复使用唯一值的键。例如:
Dict1 | Dict2
ABCDEF: 12:39:00 | ABCDEF: 10:02:00
ABCDEF: 15:45:00 | ABCDEF: 16:40:00
ABCDEF: 18:30:00 | ABCDEF: 20:22:00
(实际上不是格式化,只是一种视觉表示。我的词典包含成千上万个值。)我使用以下方法对它们进行了比较:
comparison = {x: dict1[x] - dict2[x] for x in dict1 if x in dict2}
但这仅比较最后一个键,即每个字典中匹配的值。这样我得到的结果是01:52(一小时52分钟)。如何包含其他键,值?
编辑:已更新,以包括更多代码。
dateList = []
filenameList = []
with open('File1.csv', 'r')as csvfile:
filereader = csv.reader(csvfile, delimiter=',')
next(filereader, None) #skip header row
for column in filereader:
# Extract the datetime info as a datetime object to use in timedelta
dateString = datetime.strptime(column[7], '%m/%d/%Y %H:%M').strftime('%Y-%m-%d %H:%M:%S')
dateObject = datetime.strptime(dateString, '%Y-%m-%d %H:%M:%S')
date1.append(dateObject)
# Extract filename
filename = column[1]
filenameList.append(filename)
# Zip the filenames and datetimes into a dictionary
combinedList = dict(zip(filenameList,dateList))
我真的重复File2的所有操作,就是在进行比较的时候。
答案 0 :(得分:1)
正如nicolishen所说,字典中的所有键必须唯一。对于任何给定的键,您的字典将仅包含添加到原始列表对中的最后一个值。
您将需要其他数据结构。考虑一个字典,其中每个产品ID都包含一个条目。该条目的值可以是一对列表,每个列表包含一个数据文件中的时间戳信息。
productids_timestamps = {'ABCDEF':
(('12:39:00','15:45:00','18:30:00'), # File1.csv
('10:02:00','16:40:00','20:22:00'))} # File2.csv