簡體   English   中英

比較具有多個匹配鍵的字典中的值

[英]Comparing Values in Dictionary with Multiple Matching Keys

我有兩個字典,它們將產品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的所有操作,然后才進行比較。

正如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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM