簡體   English   中英

Python映射字典

[英]Python mapping dicts

假設我有一些字典,其中包含月份的簡稱和一些數據

data_in = {"Jan":2.0, "Feb":5.5} 

和一些包含映射的字典

month_names = {"Jan":"January", "Feb":"February"}
day_month = {day:"Jan" for day in range(1,32)}
day_month.update({day:"Feb" for day in range(32,60)})

如何獲取以下包含原始數據的字典,該原始數據以長名稱和天數作為元組?

{("January", 1):2.0, ("January", 2):2.0 ...}

這是我自己的嘗試-

from itertools import count
c = count(1,1)
days = {"Feb" : 28, "Jan" : 31}

mapping = {(month_names[i], next(c)) : data_in[i]  for i in data_in.keys()  for _ in range(days[i])}

print (mapping)

或使用您的day_month字典

mapping = {(month_names[day_month[i]], i) : data_in[day_month[i]] for i in day_month.keys()} 

print mapping 

輸出-

{('January', 1): 2.0,
 ('January', 2): 2.0,
 ('January', 3): 2.0,
 ('January', 4): 2.0,
 ('January', 5): 2.0,
 ('January', 6): 2.0,
 ('January', 7): 2.0,
 ('January', 8): 2.0,
 ('January', 9): 2.0,
 ('January', 10): 2.0,
 ('January', 11): 2.0,
 ('January', 12): 2.0,
 ('January', 13): 2.0,
 ('January', 14): 2.0,
 ('January', 15): 2.0,
 ('January', 16): 2.0,
 ('January', 17): 2.0,
 ('January', 18): 2.0,
 ('January', 19): 2.0,
 ('January', 20): 2.0,
 ('January', 21): 2.0,
 ('January', 22): 2.0,
 ('January', 23): 2.0,
 ('January', 24): 2.0,
  ..... }

似乎您要執行的操作是遍歷day_month字典的鍵,並且每個鍵都從month_namesdata_in獲取值的匹配條目,因此它應該類似於:

result = {}
for day in day_month.keys():
    short_month = day_month[day]
    data = data_in[short_month]
    name = month_names[short_month]
    new_key = (name, day)
    result[new_key] = data

暫無
暫無

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

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