Я пытаюсь преобразовать словарь в список, который будет использоваться для создания фрейма данных PySpark. Я думал, что прототипировал его, но затем, когда я попытался использовать больший (больше значений в списке значений) словарь, это дало мне удивительный результат. Кто-нибудь может подсказать, что я делаю неправильно, или, может быть, предложить альтернативный способ получить желаемый результат?
Мой словарь имеет вид:
{key1:[val1, val2, val3], key2:[val4, val5, val6]}
Я использую функцию, чтобы превратить мой словарь в список, поэтому, учитывая вышесказанное, я хотел бы создать:
[[key1,val1,val2,val3],[key2,val4,val5,val6]]
Это моя функция, с примером ее правильной работы:
def make_data_list(dict_in):
# convert dict to list
input_list = list(dict_in)
final_list = []
for tr in input_list:
data_list = [tr[0]]
for v in tr[1]:
data_list.append(v)
final_list.append(data_list)
return final_list
example_dt = {"10065":[1,2,3,4], "10043":[5,6,7,8], "10025":[17,18,19,20]}
out_to_df = make_data_list(example_dt)
print(final_list)
Это работает как ожидалось и возвращает
[['10065', 1, 2, 3, 4], ['10043', 5, 6, 7, 8], ['10025', 17, 18, 19, 20]]
Однако, когда я пробую это с большим словарем, я получаю странный, неприемлемый результат. Так что с этим большим (больше значений в списке значений) словарем:
dummy_large_dict = ({'1000000067':[9929, 33, 54, 125, 414, 766, 852, 612, 625, 844, 633, 749, 710, 769, 611, 635, 632,
919, 881, 653, 871, 658, 555, 646, 751, 662, 533, 637, 486, 688, 449, 562, 306, 513,
618, 281, 418, 428, 388, 477, 553, 549, 377, 421, 298, 486, 347, 378, 487, 376, 468,
460, 374, 566, 421, 469, 518, 403, 580, 474, 506, 404, 541, 421, 383, 481, 431, 504,
579, 693, 507, 443, 614, 570, 479, 610, 651, 496, 692, 617, 600, 694, 821, 758, 464,
1082, 749, 517, 639, 720, 545, 908, 852, 746, 703, 694, 861, 851, 771, 732, 762, 881,
672, 663, 927, 979, 903, 612, 618, 552, 699, 623, 687, 667, 647, 704, 622, 840, 811,
589, 719, 599, 665, 611, 524, 755, 695, 524, 510, 440, 651, 462, 429, 716, 666, 596,
493, 496, 480, 469, 351, 442, 378, 472, 448, 348, 441, 491, 382, 476, 381, 322, 549,
440, 483, 427, 383, 647, 336, 398, 571, 654, 531, 449, 609, 584, 578, 514, 516, 657,
481, 608, 785, 673, 724, 791, 524, 740, 783, 630, 719, 774, 587, 811, 683, 749, 802,
704, 936, 750, 868, 513, 796, 776, 784, 836, 771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'1000000154':[99929, 33, 54, 125, 414, 766, 852, 612, 625, 844, 633, 749, 710, 769, 611, 635, 632,
919, 881, 653, 871, 658, 555, 646, 751, 662, 533, 637, 486, 688, 449, 562, 306, 513,
618, 281, 418, 428, 388, 477, 553, 549, 377, 421, 298, 486, 347, 378, 487, 376, 468,
460, 374, 566, 421, 469, 518, 403, 580, 474, 506, 404, 541, 421, 383, 481, 431, 504,
579, 693, 507, 443, 614, 570, 479, 610, 651, 496, 692, 617, 600, 694, 821, 758, 464,
1082, 749, 517, 639, 720, 545, 908, 852, 746, 703, 694, 861, 851, 771, 732, 762, 881,
672, 663, 927, 979, 903, 612, 618, 552, 699, 623, 687, 667, 647, 704, 622, 840, 811,
589, 719, 599, 665, 611, 524, 755, 695, 524, 510, 440, 651, 462, 429, 716, 666, 596,
493, 496, 480, 469, 351, 442, 378, 472, 448, 348, 441, 491, 382, 476, 381, 322, 549,
440, 483, 427, 383, 647, 336, 398, 571, 654, 531, 449, 609, 584, 578, 1514, 2516, 3657,
841, 678, 785, 673, 624, 991, 524, 740, 873, 630, 719, 1774, 1587, 1811, 1683, 1749, 802,
704, 976, 1750, 3868, 513, 796, 776, 784, 836, 771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]})
out_to_df = make_data_list(dummy_large_dict)
print(out_to_df)
Я получаю этот результат, которого я совсем не понимаю.
[['1', '0'], ['1', '0']]