Python Forum
Python to iterate a number of possible combinations
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python to iterate a number of possible combinations
#5
I don't clearly understand the question, but I wrote some text that could help you to find
solution for your case, I think.


Ok, we have a database presented by a list of tuples (key, value); That database could include multiple keys, e.g. data = [(key1, val1), (key1, val2), (key1, val3), (key2, val7)....]

data = [(x, 'message #{}'.format(x)) for x in range(2 ** 10)] #  [(key, value), ...] #kv-store, simple model 
You can choose another model of the db, or use external db solution. This is a simple model of a database.

Lets a user have selected some checkboxes, e.g. (0,0,0,0,0,0,1,0,1,0), this could be converted to some
binary value 0b0000001010 that coincedes to 10 (in decimal number system). So, we could treat that
any particular checkbox selection is already presented in binary form.

Now we need to make a query to our database. There are two general form of queries could be done here:
1) find records, where at least one checkbox is the same, as in the database;
2) find records, where all selected (unselected) checkboxes are the that, as in the database;


How to compare two keys (checkbox selection and record key)?

To check full equality, it is sufficient to use comparison operator ==.

0b0000001010 == 0b0000000101 => False
0b0000001010 == 0b0000001010 => True # all checkboxes should be the same, as in the db

If we need to perform comparison by "at least one checkbox equal" scheme, we can
use bitwise and operator.

bool(0b0000001010 & 0b0000000010)
Output:
True
bool(0b0000001010 & 0b1100000000)
Output:
False
Let we have:
user_selected_checkboxes = 0b0000000100
at_least_one_criteria_met = [v for k, v in data if k & user_selected_checkboxes]
len(at_least_one_criteria_met)
Output:
512
all_criteria_met = [v for k, v in data if k == user_selected_checkboxes]
all_criteria_met
Output:
['message #1']
You still need to adopt this for your needs. Note: searching in this cases has O(N) as
complexity estimation (you need to check all elements in the db). This might be inappropriate in case of millions records or more.

So, all combinations of 10 items could be masked as binary numbers from 0 to 1023. To traverse
all possible combinations (masks) in this case you just need iterate over range(0, 1024) and apply bin
function. Hope this helps.
Reply


Messages In This Thread
RE: Python to iterate a number of possible combinations - by scidam - Apr-24-2019, 03:00 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Finding combinations of list of items (30 or so) LynnS 1 892 Jan-25-2023, 02:57 PM
Last Post: deanhystad
  How to iterate Groupby in Python/PySpark DrData82 2 2,873 Feb-05-2022, 09:59 PM
Last Post: DrData82
  How can I find all combinations with a regular expression? AlekseyPython 0 1,687 Jun-23-2021, 04:48 PM
Last Post: AlekseyPython
  All possible combinations CODEP 2 1,878 Dec-01-2020, 06:10 PM
Last Post: deanhystad
  Triplet Combinations of All Values quest 2 2,017 Nov-05-2020, 09:22 AM
Last Post: quest
  All possible combinations of multiplications Shreya10o 0 1,689 May-23-2020, 07:45 AM
Last Post: Shreya10o
  counting items in a list of number combinations Dixon 2 2,094 Feb-19-2020, 07:06 PM
Last Post: Dixon
  Python program that list all possible football outcome combinations lukorir 5 8,946 Oct-17-2019, 04:05 AM
Last Post: steve_shambles
  Do something with all possible combinations of a list 3Pinter 7 4,156 Sep-11-2019, 08:19 AM
Last Post: perfringo
  list of string combinations Skaperen 8 3,398 May-22-2019, 01:18 PM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020