簡體   English   中英

Python 使用包含浮動元素作為單個元素的列表轉換嵌套字典

[英]Python converting nested dictionary with list containing float elements as individual elements

我正在從不同的數組和包含列表值的嵌套字典中收集值,如下所示。 列表包含數百萬行,我嘗試了 Pandas 數據幀連接但內存不足,所以我求助於 for 循環。

array1_str = ['user_1', 'user_2', 'user_3','user_4' , 'user_5']
array2_int = [3,3,1,2,4]
nested_dict_w_list = {'outer_dict' : { 'inner_dict' : [[1.0001],[2.0033],[1.3434],[2.3434], [0.44224]}}
    
final_out = [array1_str[i], array2_int[i], nested_dict_w_list['outer_dict']['inner_dict'][array2_int[i]]] for i in range(len(array2_int))]

我得到的輸出為

user_1, 3, [2.3434]
user_2, 3, [2.3434]
user_3, 1, [1.0001]
user_4, 2, [1.3434]
user_5, 4, [0.44224]

但我希望輸出為

user_1, 3, 2.3434
user_2, 3, 2.3434
user_3, 1, 1.0001
user_4, 2, 1.3434
user_5, 4, 0.44224

我需要最終將其轉換為鑲木地板文件,我使用 spark 數據框將其轉換為鑲木地板,但架構顯示為數組(雙)。 但我需要它作為兩倍。 任何輸入表示贊賞。

下面的 for 循環正在工作,但任何其他有效和優雅的解決方案。

final_output = []
for i in range(len(array2_int)-1)):
  index = nested_dict_w_list['outer_dict']['inner_dict'][array2_int[i]]
  final_output.append(array1_str[i], array2_int[i], index[0])

您可以通過索引到零項來修改原始列表理解:

final_out = [
    (array1_str[i], array2_int[i], nested_dict_w_list['outer_dict']['inner_dict'][array2_int[i]][0])
    for i in range(len(array2_int))
]

暫無
暫無

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

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