Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια, εχω μια generic ερωτηση για ενα προβλημα που λυπνω σε Python, αλλα ισως η απαντηση ειναι broader.

Υπολογιζω σε μια συναρτηση τις πιθανοτητες για ενα παιχνιδι αναμεσασε 2 παιχτες. Θελω για καφε πιθανοτ σκορ να εχω ενα Output της λογικης key-value. Το προσεγγιζα με dictionary οπου σαν key ειχα το score και σαν value την πιθανοτητα

{

"1-1": 0.50

}

Αν ηθελα κατι αντιστοιχο, αλλα το σκορ της καθε ομαδας να ειναι ξεχωριστη οντοτητα, τι data type θα προτεινατε να χρησιμοποιησω; Πλεον η λογικη key-value γινεται αδοκιμη καθως η αναζητηση θα γινεται παντα συνδυαστικα με 2 keys.

Σκεφτηκα εναν 2d matrix, με στηλες player 1, player 2, probability αλλα δεν μου αρεσει. Εχει κανεις καμια ιδεα;

Δημοσ.

Γενικά, και αφού έχεις μπει στη λογική key-value, θα σου πρότεινα να δοκιμάσεις κάποια NoSql βάση (MongoDB π.χ.), όπου τα πράγματα θα απλοποιηθούν σε υπερβολικό βαθμό και τα queries που θα χρειάζεσαι θα βγαίνουν πολύ εύκολα.

Τώρα δεν είμαι σίγουρος ότι κατάλαβα το πρόβλημά σου, αλλά η σωστή προσέγγιση σε αυτό που έγραψες είναι κάπως διαφορετική.

Νομίζω ότι αυτό είναι πιο σωστό

 

[
  {"score": "1-1", "odd": 2.2}, 
  {"score": "1-0", "odd": 2.4}
]


Γενικά, από όσο ξέρω, το key είναι καλύτερο να είναι σταθερό και γνωστό, οπότε η λύση με τo score σαν key δεν είναι η ενδεδειγμένη

Δημοσ. (επεξεργασμένο)

Σε θεωρητικό επίπεδο μπορείς να κάνεις κάτι τέτοιο

def winner(x,y,z):
#x []-> first team
#y []-> second team
#z ()-> initial stats

Για παράδειγμα ο τελικός CL θα ήταν winner(Tottenham,Liverpool,(3.20,2.10,1.75))
Άρα θα έχεις δύο λίστες από tuples λόγου χάρη  Liverpool = [('0-0',2.10) , ('1-0',1.75)].
Κάθε φορά που αλλάζει το score παίρνεις τις τελευταίες εγγραφές από τις δύο λίστες και υπολογίζεις τις καινούργιες πιθανότητες.

Επεξ/σία από lefwiz
Δημοσ.

Μην κάθεσαι να ασχοληθείς υπάρχουν βιβλιοθήκες για αυτή τη δουλειά.

https://pythontips.com/2013/07/30/20-python-libraries-you-cant-live-without/

https://wiki.python.org/moin/UsefulModules

Άσε τους άλλους να ασχολούνται με τις βιβλιοθήκες και εγώ και εσύ να τις βρίσκουμε έτοιμες ;) 

Ελπίζω να βοήθησα.

Δημοσ.

Καλησπερα, ευχαριστω για τις απαντησεις. Ισως δεν εγινα κατανοητος, θελω κατα καποιο τροπο να εχω 2 keys και να μην εχω το καθε σκορ σαν ενα string (το οποιο εχει προκυψει απο concatenation 2 δεικτων που τρεχουν σε μια διπλη λούπα i,j).

Δημοσ.
42 λεπτά πριν, bahamut_zero είπε

Καλησπερα, ευχαριστω για τις απαντησεις. Ισως δεν εγινα κατανοητος, θελω κατα καποιο τροπο να εχω 2 keys και να μην εχω το καθε σκορ σαν ενα string (το οποιο εχει προκυψει απο concatenation 2 δεικτων που τρεχουν σε μια διπλη λούπα i,j).

Κάτι σαν αυτό


score_list = []

for i in range(0, 5):
  for j in range(0, 5):
    odds_dict = {"home_score": i, "away_score": j, "odds": 2}
    score_list.append(odds_dict)

    
[
{"home_score": 1, "away_score": 0, "odds": 2.2},
{"home_score": 1, "away_score": 3, "odds": 3.2}
]

Στην ουσία φτιάχνεις ένα list of dictionaries.

  • Thanks 1
Δημοσ.
17 ώρες πριν, bahamut_zero είπε

Γεια, εχω μια generic ερωτηση για ενα προβλημα που λυπνω σε Python, αλλα ισως η απαντηση ειναι broader.

Υπολογιζω σε μια συναρτηση τις πιθανοτητες για ενα παιχνιδι αναμεσασε 2 παιχτες. Θελω για καφε πιθανοτ σκορ να εχω ενα Output της λογικης key-value. Το προσεγγιζα με dictionary οπου σαν key ειχα το score και σαν value την πιθανοτητα


{

"1-1": 0.50

}

Αν ηθελα κατι αντιστοιχο, αλλα το σκορ της καθε ομαδας να ειναι ξεχωριστη οντοτητα, τι data type θα προτεινατε να χρησιμοποιησω; Πλεον η λογικη key-value γινεται αδοκιμη καθως η αναζητηση θα γινεται παντα συνδυαστικα με 2 keys.

Σκεφτηκα εναν 2d matrix, με στηλες player 1, player 2, probability αλλα δεν μου αρεσει. Εχει κανεις καμια ιδεα;

Εάν η ερώτηση είναι για τι δυνατότητες έχεις στα keys ενός dictionary, τότε η απάντηση είναι στο link που δόθηκε αλλά όχι αυτή που παρατέθηκε. Η πλήρης απάντηση είναι: 

Αναφορά σε κείμενο

Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys

Δηλαδή, μπορείς να χρησιμοποιήσεις οποιαδήποτε μεταβλητή ως key, αρκεί να μην είναι mutable object, ούτε η ίδια αλλά ούτε και τα μέλη της (π.χ. tuple που έχει μέσα list δεν κάνει). 

Όμως, ο πιο pythonic τρόπος θα ήταν να έχεις έναν generator ή function και να σου γυρίζει την τιμή που θες, ή (εάν θέλεις να μείνεις με __getitem__ ) να χρησιμοποιήσεις namedtuple. 

Δημοσ.
3 ώρες πριν, Salecon είπε

Εάν η ερώτηση είναι για τι δυνατότητες έχεις στα keys ενός dictionary, τότε η απάντηση είναι στο link που δόθηκε αλλά όχι αυτή που παρατέθηκε. Η πλήρης απάντηση είναι: 

Δηλαδή, μπορείς να χρησιμοποιήσεις οποιαδήποτε μεταβλητή ως key, αρκεί να μην είναι mutable object, ούτε η ίδια αλλά ούτε και τα μέλη της (π.χ. tuple που έχει μέσα list δεν κάνει). 

Όμως, ο πιο pythonic τρόπος θα ήταν να έχεις έναν generator ή function και να σου γυρίζει την τιμή που θες, ή (εάν θέλεις να μείνεις με __getitem__ ) να χρησιμοποιήσεις namedtuple. 

Εστω ενα τετοιο dictionary με keys tuples . Αυτο μπορει να γινει export σε json? Εκει υποστηριζεται μια τετοια λογικη στα key-values?

Δημοσ.
2 ώρες πριν, bahamut_zero είπε

Εστω ενα τετοιο dictionary με keys tuples . Αυτο μπορει να γινει export σε json? Εκει υποστηριζεται μια τετοια λογικη στα key-values?

Δεν έχω καταλάβει ποια είναι αυτή η λογική. 

Δημοσ. (επεξεργασμένο)
7 ώρες πριν, bahamut_zero είπε

Εστω ενα τετοιο dictionary με keys tuples . Αυτο μπορει να γινει export σε json? Εκει υποστηριζεται μια τετοια λογικη στα key-values?

To json είναι string αναπαράσταση js object. Στην js δεν υπάρχουν tuples !!!

Μπορείς να προσπαθήσεις Δες την τελευταία γραμμή από την αναφορά σφάλματος.

>>> probs = {(1,1):0.2, (0,1):0.1,(1,0):0.7}
>>> import json
>>> json.dumps(probs)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    json.dumps(probs)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\json\__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
TypeError: keys must be str, int, float, bool or None, not tuple
>>> 

 

Επεξ/σία από k33theod
  • Like 1
Δημοσ.
On 08/06/2019 at 14:48, bahamut_zero said:

Εστω ενα τετοιο dictionary με keys tuples . Αυτο μπορει να γινει export σε json? Εκει υποστηριζεται μια τετοια λογικη στα key-values?

Το json υποστηρίζει συγκεκριμένα data types. Για να κάνεις export σε json ένα arbitrary python object πρέπει με κάποιο τρόπο να το κάνεις serialize. Για το serialization μπορείς να χρησιμοποιήσεις κάτι σαν το mashmallow: https://github.com/marshmallow-code/marshmallow

 

  • Like 1
Δημοσ.
Στις 7/6/2019 στις 4:04 ΜΜ, bahamut_zero είπε

Γεια, εχω μια generic ερωτηση για ενα προβλημα που λυπνω σε Python, αλλα ισως η απαντηση ειναι broader.

Υπολογιζω σε μια συναρτηση τις πιθανοτητες για ενα παιχνιδι αναμεσασε 2 παιχτες. Θελω για καφε πιθανοτ σκορ να εχω ενα Output της λογικης key-value. Το προσεγγιζα με dictionary οπου σαν key ειχα το score και σαν value την πιθανοτητα


{

"1-1": 0.50

}

Αν ηθελα κατι αντιστοιχο, αλλα το σκορ της καθε ομαδας να ειναι ξεχωριστη οντοτητα, τι data type θα προτεινατε να χρησιμοποιησω; Πλεον η λογικη key-value γινεται αδοκιμη καθως η αναζητηση θα γινεται παντα συνδυαστικα με 2 keys.

Σκεφτηκα εναν 2d matrix, με στηλες player 1, player 2, probability αλλα δεν μου αρεσει. Εχει κανεις καμια ιδεα;

Μια χαρα ειναι το key-value που εχεις.

Αυτο που θα μπορουσες αν προσθεσεις ειναι μια συναρτηση παραγωγης του (μοναδικου) key: (σκορA, σκορΒ)=>key. 

 

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...