簡體   English   中英

嘗試使用python字典重新格式化JSON數據

[英]trying to reformat JSON data using python dictionary

我一直在嘗試格式化來自API的實時JSON數據,以便在Django視圖中讀取。 但是,數據傳入並不復雜。

我有格式的傳入JSON數據

    { Time1:
         {'A':'Value',
          'B':'Value',
          }
     Time2:
         {'A':'Value',
          'B':'Value',
          }
there are multiple time records....
}

我需要將其轉換為

{
  'Time': Time1
  'A'   : 'Value'
  'B'   : 'Value'
},
{
  'Time': Time2
  'A'   : 'Value'
  'B'   : 'Value'
},
{
  'Time': Time3
  'A'   : 'Value'
  'B'   : 'Value'
},
{
  'Time': Time4
  'A'   : 'Value'
  'B'   : 'Value'
},...and so on

假設您的數據以正確的dict格式傳入。 你可以這樣做

in_json = { 2014: {'A':'Value', 'B':'Value'}, 2015: {'A':'Value', 'B':'Value'}}
newl = list()

for k in in_json:
    x = dict({'Time':k})
    x.update(in_json[2014])
    newl.append(x)

基本上只是將原始dict的key作為值添加到dict並將其附加到列表

如評論中所述,指示的輸出格式是列表。 在這種情況下,您只需為每個嵌套字典添加“時間”的新條目:

final_list = []
 for key, subdict in in_dict.iteritems():
     subdict["Time"] = key 
     final_list.append(subdict)

或者,如果您更喜歡內聯:

final_list = [dict([("Time", key)] + sub.items()) for key, sub in in_dict.iteritems()]

您可以使用列表理解結構(以下代碼已使用Python3.6進行了測試):

# Given your JSON has successfully been parsed into a dictionary
> input={'Time1': {'A':'Value1A', 'B':'Value1B'}, 'Time2': {'A','Value2A', 'B', 'Value2B'}}

# Iterate over the dictionary and build a new item out of each key/value couple
> transformed=[(v.update({'Time': k}) or v) for (k, v) in input.items()]

> print(transformed)
[
  {
    'A'   : 'Value1A'
    'B'   : 'Value1B'
    'Time': 'Time1'
  },{
    'A'   : 'Value2A'
    'B'   : 'Value2B'
    'Time': 'Time2'
  }, …
]

(v.update({'Time': k}) or v)什么?
給定v是字典, v.update(...)將向該實例添加一個新條目(換句話說,它會使實例發生變化)。 此方法不返回雖然實例,但None ,好在包裹括號之間的調用提供建立,最終會返回一個表達意見的機會v實例。 v是dict對象(假設它不為空),它將在布爾值上下文中如實評估,因此(… or v)構造。

暫無
暫無

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

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