0

ドキュメントに埋め込まれている数値の大規模なデータセットがあります。それらをすべて抽出し、順序付きリストに入れてから、各ドキュメントにその「p値」を返します。これは、並べ替えられたリストでの順序をリストの長さで割ったものです。Pythonコード内でこれを行う方法を理解するのに多くの問題があります。

movie_records = db.movies.find()
list=[]

for i in movie_records:
    num = i["total_tickets"]

    #put them all in a list, order the list


for i in movie_records:
    number=i["total_tickets"]
    tickets_pvalue= 1 - ( #position of number /len(list) )
    shows.update({"id":i["id"]}, {'$set':{"total_tickets_pvalue":tickets_pvalue}})
4

1 に答える 1

0

mongodbの知識がなければ(コメントで示唆されているように、mongodbで並べ替えたほうがよいでしょう):

movie_records = sorted([(m['total_tickets'], m) for m in db.movies.find()])

# Select distinct on total_tickets
distinct_records = []
prev = None
while movie_records:
    record = movie_records.pop(0)
    if record[0] != prev:
        prev = record[0]
        distinct_records.append(record[1])

for index, movie in enumerate(distinct_records):
    tickets_pvalue = 1 - (index + 1.0) / len(distinct_records)
    shows.update({"id": movie["id"]},
                 {'$set': {"total_tickets_pvalue": tickets_pvalue}})
于 2012-11-20T17:02:53.417 に答える