簡體   English   中英

將字典鍵(日期時間)與元組列表 [1] 進行比較,如果匹配則返回元組 [0]

[英]Compare dictionary keys (datetime) with list of tuples[1] and if matches return tuple[0]

我是 Python 的初學者,在獲得正確的語法方面遇到了麻煩。 任何幫助是極大的贊賞!

我有一本字典和一個元組列表。 我想將字典的鍵與元組中的值進行比較,如果滿足條件,則返回不同的元組值。 這是插圖:

dictionary = {datetime.datetime(2022, 4, 12, 9, 30): 30, datetime.datetime(2022, 4, 12, 11, 0): 60, datetime.datetime(2022, 4, 12, 13, 0): 30}

tuplelist = [(1, datetime.time(6, 45, 21)), (2, datetime.time(7, 15, 21)), (3, datetime.time(7, 45, 21)...etc)

目標是查看我的字典鍵落入哪個 30 分鍾增量,並使用存儲在元組列表中的增量編號更新它。 我嘗試了什么:

for k,y in dictionary: 
  for i, t in tuplelist:
    if t <= k <= (t+ datetime.timedelta(minutes = 30)):
      dictionary[k] = t

我得到的錯誤是無法解壓不可迭代類型的日期時間。

歡迎任何幫助和/或解釋。 我真的很喜歡學習編碼,但不是來自 CS 背景,所以除了正確的語法之外,我總是在尋找它是如何工作的。

謝謝!

工作解決方案的更新:

newdic = {}

for k,v in dictionary.items():
  for item in mylist:
    i, t = item
    if t <= k.time() <= (datetime.combine(datetime.today(),t) + datetime.timedelta(minutes=30)).time():
      newdic.update({i : v})
    else:
      continue

這不是完整的答案。 看看它是否有助於解決早期問題直到發表評論。

import datetime

dictionary = {datetime.datetime(2022, 4, 12, 9, 30): 30,
              datetime.datetime(2022, 4, 12, 11, 0): 60,
              datetime.datetime(2022, 4, 12, 13, 0): 30}

tuplelist = [(1, datetime.time(6, 45, 21)), (2, datetime.time(7, 15, 21)),
             (3, datetime.time(7, 45, 21),)]
for k, y in dictionary.items():
    for item in tuplelist: # get each tuple from the list
        i, t = item # unpack the tuple into i and t
        print(f'{i=} {t=}') # Check i and t values
        # if t <= k <= (t + datetime.timedelta(minutes=30)):
        #     dictionary[k] = t

暫無
暫無

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

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