Rumah  >  Soal Jawab  >  teks badan

python - Bagaimana untuk mengisih urutan data menggunakan data tertentu dalam tuple atau set kunci tertentu dalam kamus?

Andaikan data tersebut diperoleh melalui analisis pasca data mentah besar-besaran:

[(id,node,val)(id,node,val)...]
ialah tuple id pengguna, pelayan dan nilai mengikut tertib, kemudian asingkan mengikut pelayan, dan kemudian isi berdasarkan val saiz, dan kemudian Tulis untuk cemerlang.
Atau jana [{"id":xxx,"node":xxx,"val":xxx},{"id":xxx,"node":xxx,"val":xxx}...]
Jika ia adalah Hanya terdapat satu set kv yang boleh diisih mengikut diisih, tetapi nama nod tidak diketahui sekarang, dan nama pelayan ini mungkin berubah setiap hari. Selepas saya memperoleh data tersebut, bagaimanakah saya boleh mengasingkan dan mengisih data mengikut nama pelayan?
Masalah utama di sini ialah nama nod itu sendiri tidak tetap Sebagai contoh, anda mula-mula membuat n senarai dan meletakkan data nod yang sama ke dalamnya, tetapi anda tidak tahu berapa banyak senarai yang perlu dibuat. Dan apabila menulis data yang diproses untuk cemerlang kemudian, gelung pasti akan digunakan.
Ini ialah kitaran dalam kitaran, dan nama kumpulan data baharu tidak ditentukan sama ada selepas data dikelaskan atau selepas ia disusun. Walaupun menggunakan arahan exec tidak dapat memenuhi keperluan

黄舟黄舟2686 hari yang lalu921

membalas semua(2)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-12 09:24:19

    from collections import defaultdict
    
    d = defaultdict(list)
    data = [(id,node,val),(id,node,val)...]
    
    # 按node进行分组
    for x in data:
        d[x[1]].append(x)
        
    # 将分组数据依次写入excel
    for _, v in d.iteritems():
        # 排序
        tmp = sorted(v, key=lambda x: x["val"], reverse=True/False)
        # 写入excel
        write_to_excel(tmp)
    

    Selain itu, anda sebenarnya boleh menulis semua data ke dalam fail csv dengan id, nod, val
    Menulis skrip shell melalui awk, uniq, sort dan alatan arahan Linux juga sangat pantas

    Selain itu, tidak jelas berapa besar data besar anda dan susunan magnitudnya Jika jumlah data benar-benar besar, kemungkinan memori kod python di atas tidak mencukupi sendiri

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-12 09:24:19

    Jika saya memahami keperluan anda dengan betul, anda boleh menggunakan kamus Kunci kamus ialah nama nod dan nilai kamus ialah senarai yang terdiri daripada item:

    .
    data = [{"id":xxx,"node":xxx,"val":xxx},{"id":xxx,"node":xxx,"val":xxx}...]
    
    result = {}
    for data_item in data:
        node_name = data_item["node"]
        if node_name in result.keys():
            result[node_name].append(data_item)
        else:
            result[node_name] = [data_item]

    Kemudian keluarkan nilai setiap item dalam kamus (iaitu senarai data) mengikut kekunci (nama pelayan), dan isikannya dengan menambah lambda untuk mengisihnya mengikut nilai tertentu dalam setiap item.

    balas
    0
  • Batalbalas