random-dict 1.2.0
Python package to generate random dictionaries of given types.
License: MIT
Requires Python: >=3.6

# random_dict

[![pip](https://badge.fury.io/py/random-dict.svg)](https://badge.fury.io/py/random-dict)
[![downloads](https://pepy.tech/badge/random-dict)](https://pepy.tech/projects/random-dict)
[![license](https://img.shields.io/github/license/LucaCappelletti94/random_dict)](LICENSE)
[![Examples tested with pytest-readme](http://img.shields.io/badge/readme-tested-brightgreen.svg)](https://github.com/boxed/pytest-readme)
[![Python version](https://img.shields.io/pypi/pyversions/random-dict)](https://pypi.org/project/random-dict/)
[![GitHub actions](https://github.com/LucaCappelletti94/random_dict/actions/workflows/python.yml/badge.svg)](https://github.com/LucaCappelletti94/random_dict/actions/)

Python package to generate random dictionaries of given types.

It is primarily intended for randomized testing purposes, where you need to generate many random dictionaries of a given type.

## How do I install this package?
As usual, just download it using pip:

```shell
pip install random_dict
```

## Usage examples
Here are some examples of how to use this package.

In all cases, you can always specify the `random_state` parameter to make the generation of the random dictionaries reproducible.
The `random_state` parameter can be an integer or a [`random.Random`](https://docs.python.org/3/library/random.html#alternative-generator) object.

### Generator random_string_dict

This function will generate a dictionary with given at most `max_depth` and `max_height` of type `string`.

```python
from random_dict import random_string_dict

my_random_string_dict = random_string_dict(
    max_depth=4,
    max_height=3,
    random_state=42
)
```

An example of the generated dictionary is:

```python
{
   "40HIKZ15ZN8R5QCM96RGOC22SVBXSHB1B25KWD8O4QHN3AOKWVRJXGT2AETKLN51ASWCF9CMRAQXAMITB730UETEIWJ4V2UFTXXTA1SLV1I1M1KA3FG2ZY85X419WCX2PT0C0OOVHEVCZPWY938TPE8LIP6SDCOG2FYRWTF3DSPE4SO9E6H8AUH8FWK867QMCVVNDE0GKNLG1SEHPNCRBMZ2RW48U05SLZDOG8JHXYI1ZH2Y2LXELB5BGLWNO3SQH0M2A9IXAGBVERDSIV0RDJW3RY6BLTD157YHFAK107NOCDMJKE48RZ4TA5RWD9EBKH8C3568W6SGS16SITXG3WQV10L4W41WCLHN0YQ7HNMKUMTSRQWPHFQVGP9WNZ45R633ASXCKZ2EBSX91YB1EY38N404MGL1AC5S2TH85JQQCGNBEOZXIVO1IJTCIE2EIYI3XAHY1JS5AUKUXI926B3DTPZD9ISLKUPSSQ7A99X2K7GMOKBIC6JQ1HWUIPPMSCT2SLFSOGWSQBC48WH5YVXDSK5D0SG03F186T3":{
      "TC6IRIZXI2ERM8YLKSVELJOFRLCAIW8DN06FKERAH5E6BIDSRHINU5PF8I922GJB767X3IIEWIXSN5XUM9OH8APMHWFFA35QFT9BEF1EA1TBU8J1PZDPKBZKZSZWIYA8S58NIG35RQ4RNHZYO7VQTO8QN5Y46GR4RMQ3ZKG77W1PREC6YAHRNBFMGI56M2CWL2XFAFMA5Q0GKM0PO42H40N0GIXNIMK1LVGUQ7WK9ULUTKD2HH71MOSGEH2PX7UB36ZR38GT3AZRJU5K1PD981HBPJ01469GEG6HXKYSXT5PA7Z0M8JITHIPV4RCF1WCMYVG7HLRYLLWUODO8Q2GIXKB964EKGTE87TA846HV9UH5OYBQCYFYWUNSGUM37OPTKZ5VFDVCRKX55GGKEKV19CLQFEG1A2VWSI613EBBV1NCR61VNG974DEEIJJ2HHWREV4DAFRKE91CFJ8VI4G6GT44F3AZ81X":"NXSJQ0EJCLV77BZE79EQ6XXTISZQHS306FALNIW5O3LZJ79OF0OJXP4KXRZXAIIL0LKSY8JQT7M2462RJJ8JEQ1MEDDDEG2HXXJ4I4NVU8JSASBOB1EKVA5MY6X5KYBDKGPX4H1DALYNYILQ04T0STOMFCXGQRRDVNGDV996JTADBZAN7B454XPMN12IVTV9V2HDBPBB4DVA615F73KHM8FDN8GANA127UP2UQZUQYHG3VF7LW5WHPLW2CSLB5M5P2IK4NIPZSL48NBX1ETFQX5F8YAWUUU66R8ZW4KH25TYX4WGQ2742558FMCLOWO6RI3DJGV9JU0IEZEI172GP39Y0EQJ7UD167AZUC80VMFFYLPZPL0NJDI4HYZDIB0N4NMDPO15YLI6DPIIO1WVWIYOW3Y3MRUIVYHO084NRCAMGYSG4EL0NJ4YESACUF8ORF4K8M0C2JNKS4SFCU9HDYF1F4IP0SH3FUK72ZHPJLA90J7B7Q6DZSKQGQM8Y7WNJEOI4R88ANTA3AIPETG83SO592V67X4GJ2W0QGEKVRSFJ30UQBZ9XBZZISD4LRE0QHGA3P1W0BIGA7KZ8JKSQCUEIAMRUUKW6CCDGYOUC2DPDFGVGWFW3IWVIZMXDYAFWOOZ6IFU6ITGIVMMIBGV8T0CAEOKIIODX6QY37CSF49JHVDUU4HJVESPH91DGODLTIBWFT9UV74EK9D2PEI9OTS2OWSEF1MG9NX78"
   },
   "ON04QTT3MLUF7MKPZX0PMNAVNY589Z11W0I1AQI4VPIT2JKC9NKFGGR15PPHKBDLZAWXZY9JQOV9NLRRI9ZAR80VOYGQHYF8GI94MU9SOIKSB8PS80FAEDSZOOAK78ILC8S2256VEZGDO8N816BYL11ZAPSXH4NH2S30K88Z5LN73IDK9A8KMI10OBXU4CHGW50HAG1CHLLNLQ4ELX3ELLUML2CRBIR6O8OZZOPHG8TWL74OG6TT2P42NW2SJLDP1HZVTACZXFOG7P15JWKZ29QWA8GT81VDOTIGZ639A7HHPXP06K1I7ASRG3FASWIE3ZNXF230AL4Q81CH3GSFM0F4J73B0BEC05LW0IRYT86JK9YNN6O4WF4YXX9BQH9PGN88QGX66F854T5E9IQQE3V8QOOTBWHQQY8W1CB73V21KI4ZCQJOTPWOX2VXU80SRI3FQHSM8NYUGFIV3J9WIFX2AD8ASYDEN0EO4HBO1PD035UNMWY2S20DZU03N86MX01QB7VQJAQBSBUV20XDOIB4BW01ZU91N":{
      "DM3TP0DYK4SKY5P1DPPRB3489HFXUWW7I3N7NRUJ5Y0WMEB20FYDRLA6K17RRYT5MSWZGQZBA351UT5DDQZ5WN33P07YZUQZ930BZV628EDI176JURVEVD4GVJLDYOCUTZL3WDIZBY9I1JO3Z3AONOCG16V2ZOR77ZJCMXGJSSEY8I6ZPDAKYAS0ECFHMPCAVQQXQ6ASNES003VUX1IREEN4HQRKGD9TOZTCAD15E1SMAHQG831E0TGR5TE7TIXU43NXCG5FJG2C3X3OXHTYIDI9SDZUEQCNB5GBESKVH6PCB1Q7E3NPUWI4B0QPTSZSWRNMJPJ90QRZ73GZ0NYSGGFIHRH8OQI7HKISFJBVNN5ULK4JL6KGI9SQR89L4AQD2NPINVTZ8N56J5RESL2EELJ9BMXECXMZ3PEQKBVXUAE1Q7UB1RT0F1T9SGYPB7XLW7XVCFPRH3U":{
         "7BLOZN6REU1BIE0VRGC8064MKL9UQ2214AWJ6X811FCQ3RBMYKQ2UCIRZ8QLVI2SYRGQLH99Y3WA2T37L8DYEX81VH3EZO7SFWOAQ5MHHMG1HZTV0T1BQYGJNRZLYT3C3KW2ZSJ9CHLG9GWX66C8V2ST1X0R1EXW3K4OBHCVE18TJ9Z0I3LQ7X53SNG9BVLRR84XA6NMVYLH81":"WPXN23XCR1X7N1PWA37826GQJ18OHZ76UMHZJYLID6F66GIB29JBR5DJ4CQX1NVFLI8D5SQU9MUB3KLR89WVKTL18RJJBNLQ94UAH5TN66B8IOBFZR31ROE"
      },
      "FGE8DAVUFLD6R8CPPNEWMQQTPDPMTI2NDISIER93OPKGLSKLVIXXMYBCN1FXXRKNBB2OQUH73Y0VEZAFGWX1SL0U120QSRTENZ3GLVMYGFC936NL4GBKWIYSRXIHGMBB5B99GCYL3U8DBN8B5AK8C3R913I6IA3FPVBAPG9CS9YW9D159JIZ3GV2936E4Q73F6SG34S57HOLMM1FZPYR7R38S2KL6D2HLUS623O6IMPAKS6F9T3E2V8A79AU1LVPTKB0BGL26PLLGEXXC8DTHG72BHS5DG3R020C9YJBNKYI2RYBW4IWIWZ3UTZ80FJC3N2MU5MDQUT0UZADFSCUXKX3X3FYLBELGTMD5SQRL84O5HD7DME15D8CPOSRYV78PFIK282IWI8F7NBGCASQKS6HOFWDHIX24EGSMMI3P5ET29J896BU5LFSUE53E8A355L0HV5ZNM8KKFOCEN1K76O4JMBQDHWTGP9P52V3EECS7QTZ7QPEIIB6ITHIT8UZAGBTZSY0W9KNQ5IEKIDDNURDP7ZK8SGP2G0VDR160ELPFFULGB93YQBITEHT0PXDQII10267G6WGKFNMYFL2DGTS3FIOW7Z80T7LII3ADL27B4OXJR8Y5QO93B8WZRGDC0VY8MAGL6J9L49RTD91DM8L79DA3JVACZLUBYBRDQBHQH09U9VA4YWKW2R2ZPHA6D2IBZ2SIIMDSVAL7RGBUYR87DS5ST7P32K1JS875V4JVMXW24OMAZQ6MF1JG3M8RAG56282ENUZP3BYREZ9ETWBEHPK9ROEY2JUTK69JV6DTI1MK8":{
         "VMUP671FE8PP43YMKQRMX9XBCSO8RUSJA960HOZWYZMGEIM59JT9QNA3V14MDVKVC9RDX8NA2LYUA73JD5MTW9YAA7IRLZZZ02MEJG7B58YOGDDCPTDS3VXFEQX37T3Y0IJFTKTSAJE0G83SWLWIWL4A3RPH44PCCQM0VID659HOTKA945302IWA3G14R0K7X8KLWRYP6R4HNRLXD5EHPF5CKHFX7402SRGX6AXQYN1RQYXFA2Q2TOGA25EOXG2B08IWFEZLG06SOWJH9ZUI5BGHWI1PPC6UTR1QTWZ36GTBC8T6SFFE01XW7E6X6KVWKZOF6B98D62JTIW06MBBV3BAEUE6XL2LUO6AB2GADDUSMKYM20L53RDRP471884DG52XCQ82VX21R8LPNZD073VDA6PPQD2ML798GLGFG7ZOR6TQWJJHQTZ5V22S91RGSUM4DAG73O0G13ITG3ESVNDPXSN0ETH4JFCZAQU2EOHTAGU49RUUJ6EU4XH3Z6ZZVXM698P7UGBABWZOOAQVPSDUAKCS":"B84DACWQ5SR5YDXH7OYMV7MFP4JGN2VAAJ0RWW3KVLMB7532NS3V40TWOI8TSCHNWI274Y1G0NV32MO2IOBTO8G5C4W43Y8B9CQ0LJZYAIRB98XRVRVI1WBCSA9C412FXXEHSEBS2Y9HC4AXEUTPR9I0TPKX7TH7O21ALM2P4MXRB5CCVSMN16BTU8O1L0PAT9TNUIIOW7XCZPZ71JSSQCXB33AMXXH0V4P0DLO9NC88M3IQW9A7EN23TOYV00PJ8QNY52H2T3MS3DJO9GJNQG1P8MUELTJBDZPMX1XBLQ9WWA0QEZO54L8DVHCX6IGN3YZIFV6E61DR8P93V4ES0SVUFB1W4ILJUNQ7SHL1ZBFZZOA988ZLTF7FC0NLWCIKSRUC5UV430MA0FFW6DNDTRX1EW57Z1WSMVPF5FKW255UP8GMN08MTRGV4RJOHCM1KXJBDB37AO8O1WVVQVHABCS7F7JHK53UZZNB9VDO1JZ748TUMT8AEEHHMTRBAINZWXV0M2A2OFM79BEMQTIDJQSAKH3GEP0ZAKYDFCI3H2NB1GQIC05571KL5N80N1A7HG4M6EONX7ORP41L9O5A2JTMPNSHB3ZH6QAV8YR4KGMCHYUSMZ9U4PZ8PQ4OQ"
      },
      "KWTIWMW0WWZ3ZFD45486F11A2057GJCDTAD4TUF4GQYRQLEGYVS9ZCWNVKRNC6GCXPTBYAHZEOYPLLDJ50PANQKCE83ZMVKMBGUWG3RP8XRYMEN3G95E4BGZILLM4YTGVYL72JS30ADH73GTTOHZOLY7TW7T6SWL0UL21EFC6Y5PDXXRUG1TJUZPFA8AMJNE7H4JV6F5BTP1CQ36T5BU777D3ORSJ7A6B4BMEO26YFUWIJZYATCXDLW40ZAV4AJ397RKUDTLR8E9K4FOWNMQUUCGLNT4D0ZA48F73C7NJBEQ9TMVVAYKFNRGXQH5DTJ1GXYU0VLZBQBO1V8HAVZ9GW308IL5K7ADNI4QOQRVVAHHJY72700KWGWXOHE9UVCTAZDFBRNDKQY0U47FGLYMAXLDQC7QDNRWKUIZGPF6BTOH2J71IXMJUW6U1FCV6CCB8DETK5EZPN3FHBUZXSSHW9HBF8E64EML6REAUZX6T1RGFQ0AA8BEC7VHDOUW24NS38JOEL6XIC256PBS9U4PUJ8X7V7KA2I0IT0DIZYX7QEUGR933FHO6B1RXXT8I6VXR60K6UOYJWVX0JBM42PZAPBOG7N1D82C2HCSIBGKJ3CFKZMSJG7QCCHDAU2XN7XBLUWNVIQ67A8GRDHQLGUQ2BYRDNFEFB38GSD74XNEUXBC99H3V6XHXCD5124ZNU1QQG02K7NB1294T8295I7ZD0ZBSGE6U4ZHDP01C45RMM83UWTNHL8US9IOPNKQ0OTM8Q07EI7XWCX2Z1V670JYFXYDZFEYYIUKPI5SOB5NTZ9LKZC2VL023YEP7WPY5ELIU22DARJP186M9U652TZ9Z8J22BXSVR12KHUXTO831XEZEB0GE8FVBLA":{
         "APJNANTFYJWWLL24ZYS72S4EXLD38SLMVTE67MJPLVMIFBBR4XIJIBU5LY7JE5S9PE2RMHLFTFA1WULVIZ67JLWVARLQFCRST677NIFX7EA2A1MSQSYFRB1FM003G3X5EZW62D6NX53G0FVW2IYG49HALCZ2VNOQKSAL2KBBLCM168ABMA77Q8Y5HSU69PCZSVUGG55ISX2LTATBUTWTJL8UECSBEJS1YC2R36JW5XGWPX080ZDXZGLP4TJ914L3EJ1R0W5OTG9LTX2YHT0VLQOD8J3PLZ7LKO344L2E5I8LO5AIM2YMH5NNUHKJSX1XHQTJA9RYV0C3IGOULI2609VLH4IO83G77FWQQ8XAJOJR66RJPZZTSLHTMGZV0FUA539W3HBMLDTZD0H5IE557CGJF76LDS40ORBKLREN7UNKIFIEN665PL73NDIDDN1U1B0JAW8I2001C11SVUJIS0R8ZI9931LK3MHXJGGZNY6UBN40UP7H9VCCQSAUU32VENZO8C4RTTE2H6Q2YZQFTSFO1636P686Y8VEICBSQNNP9LY4C4KSRHHQSOQ11Q2NYLXSJ0E8PPTNJIXOGRC8INWUH16PH6XSCZKOXUGO2MOL4QH13I900J8JK1QFGED6PSPXM3MVPMDOSSIDYN2TPI0M6RJI9QTUOIMRIH4DRLPWETF5YK0NOAC7XB3HMX2ITHLPS4NLWU5ESB8S7QRY2BKZYKIGS7WO2T921Q6HIXAWA86A0HV2927S82INL8II5M0EVLBUDBAY6XVCKR940TZIQ98URYX9LUU9W4HZ9K24SFYTIK601GQYP7FAN77ZUJL539JHIBPZBWF8TQRH0ROWLI6BD2BS3K3CE7ID82MB3TK79K2VLS8HCWH8I406ISOR8DERNT4CCSYU":"NHPSVZSEM6RFRGD5TBOYMEGA42W7N9LSH7LNU9JRTAJ57UY70TGHIV220ES93VGIH5Y21JNSAXXR8M1MNYH2OE2K92K8CB96E2CW11903KCK1E92Z54YOO9817439BXYGH28G13TIRL9"
      },
      "A51F1IMGNDV8J53ON4VUN4S":{
         "DTY9LMREX9QDPWLE8PHI4MJHBKFYVA49L8EIWVEAFQFZW0Q597LWFQN1IMNVAKJMV7W4M7911U6PAB3E4UHQBD06NA671F81JHX26N9WBXGSDIKH5O0JAIMHHFULHM8RV1F2H7XJP8OR2JA2O4YFJHXM557RU5RNRMRNZ0DYJNX3MHT5R9FGTJGSWUE21030AB2V9GQCAOIJQNBIVJQEJ9SXPGIXKHK56PA5Q72GCAAW2TA2Z2HQ2SHI8IYEDEVDHD9QHB1ND3AVC980FA2K97XPGGGP434Y12RB7HA619H2HPV5HPE3CFAZOPUN5CLZ3G2BEKTN3OTMHOLE16M02TQ3V5T57G68PL14BZIFHLEN7WUPG841UQF9JG8WJ8KN8XXJT1BHXB7MDI9FSY0WB2XS8U3OK2GVXYT7NO0KP58VOC9ZPA8RE1Z3QE6DWEJ8GE6C8FIHITIT8EQUWLR1SEINWFYGNZ0USC62HKFO5VQ1JG4HAOMIQMDINT4MEOKRPOMZTQ1AVOUYENV5JQ52E1R3P2QXJQU74CMYX9YXXBBVBH6CVM8DV73QUT20RTEZVQLSMR6219JDXI6LG3PE64NPSO1EQL7AJ5HU782AXE9TI4YBXPQQ5JWO86SN8ZA1KYV8779P7QUO6QO1JZRLFPCGZGA0JZQB9MCV0IO4XBJ862SEFMFOLHGQ0RKE6A8RRXQIDIM7LOQV2YLK3OAWZ1R2H56EAT8GI9L0B6I2IO6M0AGN63UQPPRSPULOYDX8Q4APDPPSJPSJ5Y3Q12F1EDX1Z2R8CWIM5CDJ2AISEYYROPJKO3Z2RKTOM0I856O4NN":"MWGZQCL64D7MEGZUBB5U3WSAY6E81SWR55MAV4U2HHOXG2LB78H8JTRRHKQBL9P84KU04QZV3I9V2AN42WF5UUVZWYDNWY32ZFMB00M0RHWR283BUEAF99TZ5PRKTMH9Q85D46NEDJEG6AM2JG1BMZA3N3VKW449M1P1RPE9JV3M7JLY246P4G8LSUR2A9ZADEIHWQW7A4Y2U7K5FWSDKKD1MJHQQL0OXA7USTP3YTAIS1GW708JY6UYSK5OUDMBXIDMIOFQNF2ZK25QA9VP1GX0TDXNAK041QWBM5L85ZT77S9ZT5SK3XR7DOXER0GT93XXTJV8KR5GDGCXV2E1H6JW6SXIKPUC8YOSIAO80EG8W6IG5R4CP338PHRJ3XLQH0G2BNQDFLRZCSH0K5ZB6JPTHBLVNVKCH3AHP7YZJ6ZB0N8Z4Y7WNE55CHT542R0CABR8LPC619D89YZ2XK0GQ81MP7G7EW1E3PDRI2UUJ4A5TER6HV21PL2TFJ8P3XYX77LB22F3W6FCG4YZ7WLZ18WBUHF6M4R9F4WB2A3Q5JS9Q5UODQSB79041"
      }
   },
   "R1FTZMM58ZI2NQEF7GQU96GDFD7SQBYMTM4EBB7J41UYAVM8QWA3UT95BUZYGBTC7GS3XP2F7LF3M2070X80NK8JAHDVFJ8PUVIYY4FZ4X5XDRVSPEVWCW2JE6NARY13LXROTTAG5T60TFMWPFT982ZTAC19I7AFT5C6JB34EPG0GML1NG8CAJOZBLXBGDHZX0DXYV6H3SN042M4JQNP8KGX82MXIJ4TDD0YJNZVJY1DVFGX2OEH215WA54LRE7IDGBANNQJZX02M2XOLV5BVA5O2EBPACNKUNOT4PKA9F05UXQ7H1JCR2JTJL3DLTJKHEGHWEWN08XWU3L9OYR18EHSASYQTXW2EW0BADC0RRZHKTXUROFYUVO2ADS7KMMNDOJ57LLL4HXLS36V94BTJ1507SWBMCEVP2JJKZQTXWS8AKDHQAPI6AK8HGQH32NT3HZ10040NQRA4ACQUXN58010CQX1XSO7KKUN1C9CF39ZX389XJ2PDEZVBZXDJSZQW1C95D43B0MRXGQKHLMYSF9XE91XKSTTKXHB4BTHBGRUBKIL2WF4H2RUOIZNV9V3J5YAN6AJ0PVM9ZH3O1TC029KYV5FC9SMXBQG5WZ599AULWL92BUSD925MLMSYYZCZ3H7Q1OFJ037OLEH4DKQRM6WIC25Y6FOM84OFRD58CG09HNCSBK4FRJVG28HCBPMMJOSJQ602R06JWQL6FPX7XIN3CPORZK6K502J1O8X8U6RDVPZJ6XUUOA61ADFPAQ28JXMULLKNBIDDX3TEGEQ3QLA4UOSHIRPW0N8YDPYP2A3QR7IQ9Y3METRNX93A1QNWF5AJ0AH1RI2NMWG5YHGMB31BFUHCYH2WH8YOLW58OVE28UBEX8Y26J4S241ZY20ZR8U5UW6GV9Y2HRAWXW1W7SUOP0ZRPPDZC3792HYRUT":{
      "SCAFD48ZSS0521SXD0889RWDLJB2XFV2L4NRNAP9BG46U3R0EWLYG0B568VB4PVLBACQL4R3KUS5OOQ8QYPI50MTYF9JIHOC4EDK96IG3CWHPNQB7IRB3722118D28PBVEHZ71PQTBZMWAYEMC886I0IRY5FTB3B1Z1WS76L1Y9VMFH9QRDZXO2K1AEYL5JA0L89YGZROLMAFX7BOERK5JVMFYCBKRA8IV6HE4W94PFSTPHVOW2P0SBSKJY438UHK9K7RIDZQGLI2J276GKKWA2NJ8FLTYX06FG6VV2OOPP1SGA7805H1L407HE2PAF5SWI8R2OGCDM2UU7ZXGNIWE68YF34MWKNH0JN8NYT2CPSTB92LWHFNM9ESNH1TD57W26L591UXVKPOJF44YR1QE38JN734DR2UI65IEMAC96D8ORLLWHMLGH9XEFNJ4XSCFI89XPM7L37S4W2LD7PD30AUBN2538M3X9CCVOTRWYPWT8ON6JRHNCDD4U2W3XYGUI5HN5AHPINJCYELO60KVOGCLE6V3CIALGU95W47WFBG8JN0D8STAOGT0OHWUFEGJH0BLCIUYPJ2OXCQ2XC7NEDUMB5UFIR9TKAHAMW5GULH9RW8XSBWBGPND5J3JY3Y7ADZ15F63UJB1CIXR6F5DQVJZTRZKLF3OIERKYL1HR9Y18D8E0VMAFZU1P5R0GQXE4N38R2JOP9TGIW9RTZRVOK35KMIGGCDT5RFPFA1JD2VBV90TMJCBZDQ0B0RL2FYE59ZBK6VX9DK7BXPJ7OBR4ZNNO0NCXRSBZZDE9HUE9QA89NI9O16S85X88AM2BYIRE6LZ1XNEIBTDZO9KKF8II2KBUX2TCHRNMO1H4R77SE0YVOVTZ86AI":"OVBSBZ8V3PNLED6IJRAYNLKRDOXDOXOJLN7RCUWNH9M13SNL58VW1N5V5I3T0EWX8LSQE9Y1J397W2188WSMYWZK8X6K0MV8FTIOH8E2ZK9E04PFR50SX6RLZC68WV2NGNBK0UHGTDUGUCNA4RRARVGK42XJQ7U51MTHWA9WXNIG1E3J89LWVNT24LTIHTRYLL0A6WQLGT7FLG8V3LU2JDOE02BQMJ3M1TGC21C4E0FZLYE8N8A2GG9PPSLYW0WOA0CZBZKU48DVX3MVR59ELW2DD7BGWMZ6CDLATVLY5E62Y7FIVUAYYE6R1Q0FQ1DWUXYR1VKB4NFBZAIWS5VT19T2DMJD6ULTT82GX1ON91YK6KGLUPH9DA0FJA7NKSCWNSTNKDBVIM79WCOHBGRIMHP0GXVE0D10FLK3GNAAS0G31BQ8MG5MGS3BHTX7KSNOG6KBMMC1KTQFUMTNLUVS9WX66EXLT9ITGXAE9QH25HPHVX8P4IDWTR1ROPMWSV8SDDGT75NV7T6KRLJ3ADH3A6Q7UCS6BJAEYTLYOQ3FXN35KQ0QGFVJME1ZRA57OGSDXCBDZIQZRARWVA97W5JW331R4HT569RKBRTSBDD2S42GKXNN7TP8L9IWLYGDQNEQBD3B8BMVB2JA4FYG9S39FYYKUAJ57ZJDU1AJ9QZC0WGR24M085YZQPLMXPDSKHH4WDRLT0CB93QGVAPUJBUTT9PMCHTF97IF43QDQBL19JWVI3QSVN6WHR2DL5IK7RR9ZH3PX0KE27CV876ZEM8SFAKSL3MU9NVF2JKPCBJQM10V4104J5EPPT8LFKQB88U8P1HFHJQ88K5R4FDFTB"
   },
   "945WP8Q9KTS3TG9OQMMIC2EMR83CMU7DHK78YDPXJYAIFR5U8YWJYCIXTB0ZDQWZJ8ENPPRYV2OHXOOASY5OCSM6M5T5T8T3HIB1K7SRRQOSPIIJ6TRBRRFGPYWIJZQVR07SSQ192HSBP78WLP4MBX3BKTL552H8RLKCO6FB3KMSY82UTHOD8FM13T4O1A251MZMM67AIEA90P23P6ZIIQ9SO4MJMFCICWLLUFQDDQTUG2WG9J9OJTL6GG8AXWBY59UDTKLIYWB1XGGIYZMB70PFEGJZYCMF9O0HWTLCOT96ZFSW4MYZICA6REWF5HGH7YWZYJ8GL35A1BX6KRY8QGS4NKCUS8DIGCZ9S1OYKEQ4HQ6ODV8SIMWEJ14ZWKZCHECTDRQHTNR7N8CPEULKIBVZPOUTVOPWLMB1PI5G10Y4MZQ932Y1478Y1O0NYSHNJ998V0BM65JKJTGAJIGJ8103RKMXJZFX0DD8P50CHSR3DH0FWVF8TFQEN52F36GF3J6R9LOPW28H3EY0C08Z1UMYYQDEB4IOO9HAYKRI4D8H2K1NMFZEPAA6HB7USNRN17VVAQCRQZTU5YNMBNLOFTWNTT9AAJEHOMF1OZSAEZ1Y9CAQQ4FRJGDTT8E3CWE8GP04GHI8YNKNUUTPKCJT3A715DD6F0HF7FRDATVTBV6QP4KMZHOZFP3ULQW8ODCO8HX27BSB41P9ZM62EU1M2XAH2EXN9K1GVEYDHNYMZ965OZ2KZY6525NDJYUJJZBOC0O2ILYPLKT59UFGLQBVZ1M62A5DAPAFHGLLIAZ9UQ9K9BE6WF99M1N5Y98TEZL89357M7QL82F9452UTQMPSP85HJPBJRUQ94G1Q0WEHYRVO6BCVB6KPD5I08N89X5CW42P08XYABM1L8UAL66Y":{
      "G73NCGF464EGKRVRKHCK42IFI3MWKYW7X4SWBJA4XFI5HJ7XIPLBBJ5C4ID0EGH7Z0LU3A3FHNSOMOU1S7KPM3BJMX29870D0F2OLCXWHINOAH8PGXPNY4QULO0Z8LWPEAYRJPZLAO3425ML30PUMUPVQK5WS563SZ6AOFVGWNJ5C7DO7NDTXXUNLZA1G46P89G68IGR5RUU8Y5J6XJTDNCUCBVR2YFM9Y2YLLI5B0BD83V8G68TZA73VQW80BC2J5A3BPMV5ZMQTNJWZD34S6ZZ3LA70Q4CRI4COMSYQ2EDLU5VNVU7FPRQWPT157IRBD9FEK0EPH7ZL9BGJWM3ULK6ENTHL6FNGRTPUET0GBPJFYGU748UCX8CGIQ4KWIX0SM2Q9LMQ037M32CGCQ354VM1HIBMO5ERNLC9LWG8188RRLR2NBKVYQCFV5KH4QX8UOUZKKVO6ABSIDESS63R50M1X08XIZGIDLQAA9PC074L9W0WUTBL3FFZL4P012L2PM5MHG06JOI270MKWFZMB1OHEYOZGGF62YEGFCYRKT7UJWHHPN1JLSIF42TKD7CVNTDT220DSMUGLWBWZNO47S1KJWTR6AVZYN6PEHE1YWSJI5M92M1M4A8QR3JNZT8WVTAKE4ON0DSN09WFOI5XRSYEQCVVA9TRT5G9CHL21DA0ZT":"0B7S2UUKPVRQ277BRYO8X489QQ4E5DH9LSE2MS5KK6LVOUK5BTSKU13PLIS0VG7G2T9FV8FD6TSATGL98716TC2LACPYX7M7ZIRCU0WE402V04DRF28AZJLK19X92DAQB08JTEZRR07ISF5LBEYF8HHH3RCUQSJ7"
   },
   "8P2EBFLX4PYZYUPS7Y20CQG031ACQCKV9Z4RH33F7AKI20TH7PJOOVGPXV34HKQNNTC8TAUU9DV41DTCN1RE9IHGN431Q6WG5OCD0JZV2YCTPZJ8XUYM8KXASD5SJ70CHZM8J16YHNKY0JSS6NY27USFRO1167NWZX6VVLJOW6SV1TA95DGNNMMVV9SZHF5SKH54NZDOVPO8LZ8Q5F9HDMCHEJ3GCDOSIWYSLVSUJTAPQHR5E1KIPL8BKO8YG6EHAUL6JGRI6N1CAW9R9FBZ6CNCLBLAKO8Q3KGI6RWFTO5WGY9PK5ZK2TQSTC2CXH6D4RVNCJZ0ZJKS5QBMHLO6MO4XFB4OLAKKR312KEKHXTH57HH0JOFX960FNV6TTYRQLZCM800AXCZFLJOG9C86LDM75WZ1G1HI29UEARVWPUT8M2YB3OBKY1Z7ZWZKBISM60AULFHI88WQR80RVBRV02ELGMMQZG9O9CR1LI6TAEQ4XE2L13AOMZS4":{
      "ESUE6R9G81RTZPJ7AM098H54XYKFJJIOOJPGN5MDE1LG2NMRGXW4V96XWBD9BNKU2IHSAGZHQKK81HMBM807ZTE1P2T6P2C19FD9JVGCP4H2WSDPJKHZMYE7QHJJB3PLUOFLLOFBJ1HM1TPNCH32JOZFI0SWT5SUA23W5EBI0PSX5HWVE58RGP2J6ZP2UJXMJ8OTB7ZFJ3VWYABABBGA4GEJR50YWA87SAB4JDFDB1TZLEMPJEV0QRLXLKVGUXIKWVMYBR0L6ROLGO2YLSDZWPL190DXDZ8Q4K67YF7YJ0SUIX6D7VFMULJZJNY77SGXWLX0TMSPY3I80E4ULQSFY2Z8ZH875M1N70VLJLU6NB0UU2IFJESZXOCLYE3G9DR6IL5YRT28YBDP5CLW2KY1MYVI65CSRSNTFCO3F6OOIU1MD4IWX4IR7OA6F6FPYZCZ4BFBQKDG73SWEHCEAJ7KZ3UFJS6WYRXQVTA2QM7GR4JL6VAVENCBR0KPN9SAIPBCVNZJ5NFI6K8S263TGY0S1K64FXA2028U97PSZK1DHRO6AHSFUFRIEXV0167M493K2WM44OGZIILW0QT7C1PA1TW2SQE0YQH0KUNYE8H3ANRPMH2B99LX4EO6ADKCVUG8YK5IXA20EZNBWJFIS4V29WGTHTIKNIJZA54UUDMVNXC6NHWM4XRQ9PJ8WHFX4HGMRZT89LRSVQ3DOCGCQBVDHOTRN51DTRALSPHYKJPKJB2DUDE3USS15Z3I36XYOVRP5BZ3A802XNQ7DKXJX65O3LTPJUCZMGE06PTGMPPRAD8ZGC1DKL0M3QMAVYQGB":"6U7UFV075MH7VA9LFGUH3KY6V1H5AXXKS7GV3IEQDKC1E73XTYAON1UWTUU4NQIQ6URACFP596M133IPMEAFSDKT51SL5PPQITQT6ZJMVUMWWHX4KREEIUG75MCZU6Z2L2NWWIOUON2K7UZJ03ZDL3OTXJ4YSSUT1ZYLZNBKSFELP264CE8DCFZUWTD7Z7NHC9YV5J3B8EP8PADQXARAQO0ETM8UKJ0ZCYXV0MGJOXWV7DAHO0XMGSJHL9JRUVHPKY1LM32XTB0K8X6YIENRLTVXZB0DAILV7G4SB8K0VSV8QC9HYLBVLU0FHZ6GHCVI79CIBVLCGMIEQH23X8NROJXOW19FJWZS0KYCIHZHHOMFUP6WULLH"
   }
}
```

### Generator random_bool_dict

This function will generate a dictionary with given at most `max_depth` and `max_height` of type `bool`.

```python
from random_dict import random_bool_dict

my_random_bool_dict = random_bool_dict(
    max_depth=4,
    max_height=3
)
```

An example of a generated dictionary, which is valid in Python but not JSON, is:

```python
{
    False: {
        False: {
            True: False
        },
        True: {
            False: False
        }
    },
    True: {
        False: True
    }
}
```

### Generator random_float_dict

This function will generate a dictionary with given at most `max_depth` and `max_height` of type `float`.

```python
from random_dict import random_float_dict

my_random_float_dict = random_float_dict(
    max_depth=4,
    max_height=3
)
```

An example of a generated dictionary is:

```python
{
    5.838465975049892e+17: {
        -4.008570194091692e+18: 7.671696293521426e+18
    },
    -5.404113932518959e+18: {
        -1.0826526904696832e+17: {
            -2.0148582735267492e+18: 3.867521655027165e+18
        },
        -2.9688147469768294e+17: {
            -7.380086557178485e+18: -2.506577041256698e+18
        },
        -2.9138314192637604e+18: {
            4.697547290608851e+18: 4.830654770483216e+18
        },
        3.9789321536341074e+18: {
            -3.638599544562848e+18: -7.972525504741839e+18
        }
    },
    -1.221119660224516e+18: {
        -1.3650496171266396e+18: {
            -9.213258899606604e+18: -4.296518858697994e+17
        },
        -6.628155848495411e+17: {
            3.77458873913942e+18: 5.981093646914435e+18
        },
        7.515186864336656e+18: {
            -3.219764523205816e+17: 2.251170816546177e+18
        },
        -8.644881667850097e+18: {
            7.209687400215734e+18: 2.822324547824081e+18
        }
    },
    2.58967476722851e+18: {
        -2.326310449248946e+18: -2.1900475783758582e+18
    },
    4.875708300200688e+18: {
        -1.8343697977334477e+18: {
            -1.4504606390152458e+18: 7.405124711101133e+18
        },
        7.058700713359712e+18: {
            1.886613655377924e+18: -2.3740162253553807e+18
        },
        3.116858697691941e+18: {
            -2.888025820273885e+18: -4.3122215786878013e+18
        },
        1.660050777956436e+18: {
            5.71100290923741e+18: -7.972143965030861e+18
        }
    }
}
```

### Generator random_int_dict

This function will generate a dictionary with given at most `max_depth` and `max_height` of type `int`.

```python
from random_dict import random_int_dict

my_random_int_dict = random_int_dict(
    max_depth=4,
    max_height=3
)
```

An example of a generated dictionary is:

```python
{
    -8957474761186343626: {
        7292188101330365487: -2468660774499068450
    },
    4067273498737636301: {
        -6046743244139167770: -7189532293873771925
    },
    -2334320921180678090: {
        8773594462708811803: -2193239901719276460
    },
    5562838892642811787: {
        3164652842771697394: -6347020828801507995
    },
    245279891019254836: {
        -1892486395089534380: 6305871656619735194
    }
}
```

### Generator random_dict

This function will generate a dictionary with given at most `max_depth` and `max_height` of mixed types.
You can specify the types of keys and values by passing the `key_generators` and `value_generators` arguments.
By default, they are set to the string `"all"`, which means that all supported types of generators will be used.

```python
from random_dict import random_dict

my_random_dict = random_dict(
    max_depth=4,
    max_height=3,
    key_generators="all",
    value_generators="all"
)
```

An example of a generated dictionary is:

```python
{
    True: {
        3850809717962289273: {
            5.032368430002846e+18: (
                b'EFF57S5PY92OT4WZ5PG90ZP3UQ5DID06KT0N8Y96IX61RDNGWXFT66U8JZCZRMQ54FTIXEVDHSGDWRG82A017CQZQFZFHE6L86XNR6SPIHF9XVFGOGMR60YM9XN5UFFCO23J5AGE3K2PPWBXAXS57DFQT64VM22OPDU0G2ZPYN0J6UZF3WY3NNU96F1FY3VVHPYH4L3I9PZTGZMGAGORBCJPU4LSTI9K87BR8VFLU2RSUE5BFQ1V7TFVI6EXKDFRSS1O7H9DWGYRW96TOQ9QW0HSMLMOK7IISGNOKFGC9KFHP27WQ52SP91HPVS7SUD2FK2DPJSZSZNMEM8RH55KGT6KHTMPXICIV8CNDJCULGXS6QSZUZER75ZJIDLHZ75UKCKJWJBHWW9J1HGPJHKVE6OLAG51R053458W88ZU0S9UBHNRIN6YPRVBS8IR3EUTE0K6O28GOPIWO6QZ01NW9EELAASWELBW4PTWKCTH1PQPX6Q6J59FR1FF9LU3ONLY5CGZ8T0A7B00YFHY6H2ILMT0IVQLX0JODBXYIQO1TH25FYAJEFIRF6UCK49PES054JSUNUA24PQAYCJSBTMKTVQD7DS2WWMPYIB5DUYPHNLFWH5LQIRZCU98F8802C9PCLRR59O2YTDMA7OVN20HXZU05XIGTKGMS6JK0BE6MHH8CV1AH2MYP89CHRT5X058O09S1L05I3TE4GMPGPABDGJZ6NI34AQ7TXIP4PFWW0UMXRWNPVRRAJZV',
                -1.2646110568889774e+18
            )
        },
        -122348294308631256: {
            -1.3225498068959724e+18: b'25RW02BTH31GPEKTMPV3BWWLLC32KMLWM2HYT25RWXSXAC9UV790VGF6XDUCWC7U4OQ681SKX3765KTYEOVCNMAJHEOEYC0058KZJASHHD4GSRSWW6DNC5C5RF53W4M2MUFBAIOKFT203L7ZXVL7GBP95XGXKX6OG32WZ4DBW1U707N4BTFGDAXM3Z1ZKEKAWI24ILLHGQIH53DUBJ1LZ067M8AEO4WTDL5H7I8BWD2H507WVF78981K7BTKDFBSQC7UTS0U5UDCSPIBEOVDGMHLXJ61P58H5CFHNITB22JBBDOCR8KSVFUXXAUF8CIM599HKEJXQ152D33PG7DGF0IJXMDTJLZYSLEU5T7EI5XPF5660G4FN4PDCQ1FPXQJHG60D7A1YGVQ134FD4AVO9LBAXM0RM0COF8097MPAIPU4FOLMEZZ03XJSOHNFX9GIM0WWHLOUKISLMS3K789QP07BAITDUHXNZVHBTU82H8ZG9I2Y66Z47T0ZE7HCB5F9Z5QU52WCX8BVXPJ3IJQDQ1KQWZ6D8NR8QRAVMYIQXLZ8NA0ETIM9NSI8XRG2DJOO42M82IR9258TOVUPGGJKWNJVOGMFQQ96MR6A05EGZ7DCSG16816LVQ0ZYE95TIRZF659CP0UHJ7PUCRGP92WPU1U4H81N35R8BB7K1U8ZPO21ZBL5O1G8AD0F6DTMUQE3IRFDBF5VJRYWN7UO1J62NU08W211WR1M0XAZ5Q5R106QFCU1Z53TQZH7ICUYOTKGSG79LF8LJGL2CH7DL8LWPNUI6UE2Z3M8EQ9ZHDAB9IXKGA5IW64POQZUDC8LBDF7LWFUEXKDVOIMJOD'
        }
    },
    'TFSFW0JAO1CBKOJZ94AXQ7RNKOU3W87MD42DFVJ88VQ491AYO8WEXKDRFRB8G9HOYRS5N3IGYJ3VZF': {
        (False, True): {
            False: -2424799385895555469
        },
        (
            6842235171093970376,
            b'ILHM8KRE223JOSTT9PLKHFSRIAG44C9KEKSSA501XVGXAKHF1O0LRWYYYH0ED9R6X8CTLS8T24RE18X6X5KKMLPIJ3V939NPWA72ZOYTAVO8295B85Y52VQPGOJODKC4BA039BIYWOXD9KF8FX825EF7WEEEL86TQR24HR38TKPF8ONI5HMW37SCXKPMBA7LQ6AAPS82WPJ574U28M1RLQNA2XNBLNYRYT7NTSBCBPZH0HQEJ3J78KF3BK3WI7GEJH2W8DIEEMY7BVI4LPKLRCA6BREGOZUSPDTCT8TRDRHUVJ9ZLHZWCS3CGB64U84BE1ZGCDI6HU1KIHWN030OSCXQVEJJ0TPX92IICSZJ6WXBUIGABDXG1OMXUYGFVRPJ2SHELHSWQ9EHRU1I9NLAXU9IKUHBVEI9552W9XN0VE9CE26OS'
        ): {},
        7920822393579589677: {
            -9010294765205127260: (
                False,
                'A6X5JJ5P4B1ONMURF0B0QAWU9K3MAGJ5D2T1860RQPJ3ASKV5NCRMGVWFG2BSUCCD95PSJT2VSIETOHND9RTL4DPEI9CE39CRXVLNJVWKMLAO1CSGO4L7MAETQ1PJ08MU95O7C0NM4WUKM6555ZGFGOJFPHLTLN8YXB92YX3BBFDA5P0N7QN54DW0YFTXFYFIIBFFVWSNWFJIM6GIT3H1TSDJGJCTRAZT23ZIG6KXTQS46RK3285QSEET85N75I1QNCOODPWEYGHL2M4NR28WE97JCBGEKYJ4DBMWHHT0CR3GKIAD4Z3MZ8LZJ5Q6JQPJZF6D4T7AJLSL32D0IV29NVN9X25PSYVS9F94YUTOMDH7PPQISS5Q76RE6K78QHFGB2354DJYPU0ZN03NKPZCID1ST035VSRYXDYDD3JQYFARCYAT2I4BQGC8XN9ZD0TTM8GLR7PPE2JM9R34XWB36QQBJITIC32R0SUXYSL5GPPQL1LY719SF79WUEZL1GI6IOKMYDZ6KFNIQYGWTUQY25RB01VV6HVZ8UW0FY1CVKGPJ05GTCAI3N7C23VEI9FPZ7BPFAZA09271IMH1T31XSPD1LR0K4UUNEWNH5WOGB67D3DFRIMVS3EJE4519KXE1OE80KON3B2NDJL62WYLP6K2OGKEL4SLFPWS9ZUBMT1A2D92VQOAZUXRKOJBB8GL94YEQCZ6C21QJNY3GNRJDTIQH962ZDPT2O6KKB9DJZYM3EE618B3AER1L03TYCBG7HNIRAB71R3CJI7RT2P1O0JUWNG9A0AZX8TB930P8LFB7XNOPJ0FIJ19IHAIEYHJ0T1KTE4J8BHV6540SBQ0WPFBNLDTPYTQS7WTD7ZIOY5G08HYQVEK8XKCYGYT8DMABZPXVPJUYU6F56AAMS4Y3IZNZ0GIWN1O1ZKJ0S5JWVF4RMGDJ9M116AWAN2IOLM'
            )
        },
        -1432440954087030864: {
            True: b'KDOGGSCTWXFUU7BMGPDPG0XOJ7IZ1UCME1XDE17B5YXP00HHV2TUNCFY0CAYWBQ543XVGZ3ANU3ALROWP6U10WGN31LSA82A9QZT3VGNI0LBN2QGET1BKJ9184JNUUMJ1H04H23W3XA2YDSMLYKR4SEW5BT1XZI9WYG3FXCCM9LI6BN8FMF1E5QQNU4ME2IE7TMBKITB26F01OMIQQ9NWS9KBO2Z0HD4P3KM4HPNXN2BJ1W3073TJA5Q9ARE29QVY34N0ZFSSEQJH3UF5F4VGHIDVKB83J3CL3XOYZ0BJGJ9V66642XYRAPI1OWNLN26B49AHR2BTYBDGPPYOF39EZA8SPJ3717DFZUBC4UUSTBAOZ57NDWMWNZFVL50VZRXEAFRKPYKEYZMPGKUDO7V73PEPVX95NIDLZSP9FM49TFVM7DIOIJ2P77Q3JPQB7R4YDSDON30TVP8ZBBMNJ0CFR1LGRIY9VELWCHR8UA0HACLY0XBZ9SVTKCOO5K0FHYNXLKLGSSBM78KI5A937MZJW0LC4J6G33NJBJWJ6ARKEZ0W32QGHSDQLX75NOHCJZMLA6DGPUWZ1OLKHOCAL0IH0XE2UY1AZ0H7X11XIZGGBWFBNY6CIEGA78W9O5PONTAOLSAB1EXGA3I74UK8IHQI7F6IRCBQIFYZ6J32RA0VQQFO'
        }
    },
    'RES628Z47JL28CMERAIQZI42REEGHA0VRJOJTE06K4IO2Z24LVL7LCGVYYVL7GJ61FP6CX7XJLM16C3O57JE0DYQGMKHA34PR6W26NJJCQ35NZG3LMZM4EX89VESWWJAZOCT2TK55T4YBB5RMMDCND3EK2IBTM52NRG5KWYC12J0XJ4VE0IZSVXD7F7GBCWWYXWS0FZOLM9O3NR6YEIKAS6E8CVPZSJGFCYFNE33M2NX8TPZGITZ6H3RELNS1MHRRF0NPF3GWJO6QDRST91D7GLOVW67TXREZPWQOKANO8CEZ4UQA8W4CR0G12CQUV9P51O8CEKDLQ32D9THS02EJTBS6RTWVDET93XM0OSNY0VQ3UWCTLJSDLVX2W3KQNZVPLQE0V722RZYG9GGS4GHYIJOE8OYGAOUITD05': {
        '3GTENK4SH6XHPPA95U91WLU7YQNFLXDBC7V0FHWVVQUI5VPK1Q9KCMC46VX8O6VQIKOWIT0Q9XO5VVUR9TR224GKC4Q648MVMSVMYXP92EU59KXN7RQWLIJV177GAIBFJ082NRC4IGVKQB5AJL2LQXEPAMDQS80DG33O1PTN70AOFIXGM9XGZBP3LTKEIF9VOYR6L714WNXAFLKMPEQROUOPYELIXTH2ETTGIAH4ZZ5Z8UWHAFOKDKUFJI8GLT0MNFZRVTZITQL0AZH8RI2BMJNU3LFBPWGT7F4HHZJWQ7YH7IOLR1GVAVDVUHWGPSFZTOEJHAAQFLBF1VOMA7HNKQFYM0WBRG9FHJ5I82I8E1ALOURT05LOZO46B9B3LIPUJUL5OWNRU1MX745LKNRAXHB4OCHLR3NJV3S8U9CPWXRINQOX5WWNK98PGFDBV75UT16JXHAY2GREPQ8KX1FE1N46MP1F23XO14IUU0S5SJLJ5SI3PHRSU8S8OB9STS9APKGMWN9TGD0MOKGNWGFL29Q7PPG2KI94NM2KO36WQG4BCX5UUS5HXSW22DLC2KV6XJG05GMO5A5524CL8OUEHVWA52L2HUP7SXNIYT0QBTHXQ8TZ9PNDPH9I9ISR3WG8R2H5MHP9WCS5K58JDAZ55DTTIB19UR1H1V1WG59XUHK49CSBG37DCO1ELIIWBK68JG4IGAVXYW2WMTGF9B3B8FOL1SDO2IDIZYDUA4RODWLEGNDLLAKX48JBZVCAXYXYM7TK9X7YXVTW3Z8X9V19L7TOZPAXWH7MQ2CC3HDUZIYOMWV9ZIIE6R7NZL8RZPIYAKRISXER2L8A7P8EVSGKL': 2324388942594025560,
        (
            'YJ1Q0WR5IVMPFYM9KTGEM8YYAO1W9OB6TQ404IYGHUWT85JDCCQZDY7NZ4LITW3OY6B8D3MVP4E3YQLS4YGUQT31MNSI001B8NTS34SFU4J5WS4A9SQ811HRZD2MYGFJ4K9KH0TG4MOLAYYEAG3MAF4IUBJ1JTKSQP27DWSLG5ZT0YQR1JO46W1C1ZN4ZCP4A272V6SXY3GXJCZZW7FDV4DBHY3V29GT915M59PQQEKG4E92KHL48ZSU3Y7OSIOOJNNYA63R6Y7CDMIV15IUN5B49XNNLJXV0G6KIOM61WQUOWVLT05ACN43WR6MQ33JDN78Q0W2Z7L6IA9OV954VOJHBIVCKNU2XNB80DGJUPLTA94TZ1ZM4PPY25MAIKYNTF5NQLNBUG1TKBZ0D3V8NM42UYAYQ3AO786DW1FJUTW3MZ7FFRAH',
           b'UUSS21AL8PSUZK3BAX3YXS8K664I7URYKKN097Y9L9LF6QU3Z2F1ORL3BTAAKU7XE3NGM0EKX3X65SM921VRV1826KYJYNT8FZJFRB1PA17UFGMOUKPNNOPD9RLECS1LAMX6FO35485TMXBGVTGH3ZUWXB13SCC0NN4MWFYVGI4S21HXCG4RHNGZDT3EH2HW9IF73KVSMB9TY1MLR7N7MCJ7AFIV07JGJH4TSZWA7IGCHLOTP4EL949RWCWAO6HHISB'
        ): (
            'WOPHI8X3H5TDDTGTNWV489M1O97MV7DSB104CB07UVMFTW6KBXXN8VJRLDIGGW3NARU3A2ZU3EM3WC512QUWP4R3D93JFSXKYMZ8WZSQWNHUI19RXKXZW71EJE3KYUYP13LNY39Q7SAHNIJRMZ98382B5UT5HY29YS8CORZ96X3F58RGH6QI4UBSMDDZ3ZA5XGFRLD4UQSIDY3CYFAKLI1TGAJV0I4H5EX6F3ESXS2FRP3RM9KB9EN7YBRI0IZOH6C3Z2L13N078H4P9MLFRVBLWNCQ5K60S1FBP1YIB6IN56OOTEGJ5JMKE3XX0B5X2AK80R5TMPACJ7CDEY0VH7P2M5ZDHKXE0B0KT7XM770O23RYT3Q7KSGWCQ8S8N0T9NFDTESX7E61URJKVPBDUZVVCKZ4JD0TK3ROUB4QGO5OXIQ6NU9TK3BEG5DD3RYBU52DMKVBETVEPTBZAQRQK0FVT5EAD1YME3P21FTB84O9CVTULYK0LYCS5XQRRWAEA9I67RJVLGSFW2CI523KGF9Q6MVKOSE6WQIW2XKA7UB0R0QOGQR55XO2Y1VDACFH17O6WZU40WDUCW6H5XZESMX082TC56NIQ4B5EA1Z6HWHIHWNI60QADR9B49I0FH9QU2RLT40LUNC0400UO1LDV3LZKMS15WXLIO0Z2UI9IV10R2C34RZWTGYAFQ3A4X5JKE0B8KFDHZ3O3SDWFKMZ464IWJFL5MHQLOY14Y7N3RZVFP3LC9FDS3MSZRCWDZB09LKI3U3S6ATJFVXHA0NXZHH6I8R4Z96IAKJGCLJ48SVTM16WVTQ8OKUTEYK28Z5',
            6.974640690203998e+18
        ),
        '3D4OGLSFVEK13H9FBN72FN8WK0W4Q2500JIAY7CUI6ZQZT42UECSZBDCHISNX96BXETVD5I6MNS9VBGH1GXUTY1M5UUXVGEND8A696YQW5YE44NJ1CW0VZ24H2GKZM2927RTS7OQFUTWNT7BTQJOZW7FKAGGTLW4K75JHY34ARJLI28Q06A19A2FHVMFZP3XDM3H8VGWM8UBAS2WRT6GBISM74MJHSYD5604X1PI033NXQNXKCYSV1BMDT25OTLRGTM47LRNW5ZOEN2BQW2Z69M7Z6LGR0PA5WFDFD98ZUDGDE2563HRL42JSEQU62PLMVEIUJ1XD781W2GKFL0YZ04YU8SVYO9F48NGIUF72DRLSO7C018ZKJO0ZCK48W5E3J3Q97KQ85M5ZASARNIXTZS73ECL7Q2BYKTFLJU4WMH5R5WSX0BC21A0X48FDXVZY2WS891JHN63BBJB9MQZNGVZWYNQQ9QXPFOOZRXQBE4X2IPWJQIPMYHDRPHPC4D0UP9JHZ06YNUSU4E6ZZX293TRQVWT4IUQMKLY0VK9IK9SSUIIFSDYIOIB04ZUPYCY3OO43NUIYZ1B1BEHH6NAEMLD2R9NCJ2QL4Y58I85IO4JCRD95MJ0WC5JMGAMCIHQGACL984NKRJID7RVCS5ZAMEZNGBZM5UCF7HUP1R4KSDI7T53TU3099VTTV4JSMO7ULJ8965C5QGX914QDKH13N6L20XGN9083N20I30GK1ZIX0WIO8PJFKJB8VL59NROPHYC5ZK7KJ98UFW6PM2C57R979KG4ZGZ8IX0LGX23S52A0QA9BZI181O7N80CXYUR5RRSQ1WNPSIYW6368LYZG0HDZ8XT8W33LEWRTYTWYLV0SZK9QWBE7GBEJFNAH3UQR': (
            True,
            b'QHZB0Y74DHOXS0H8JJ5PRXE4LTDP6LE1WTQQ0I7KYU64QSL24KRL8B3KQIZBTHEUO6HPV9A3AW289R5Z997US1FZRDY1NFAHMU0NXJPMACRLK1W3OBJ8SW5KSHZ0MXJ3T88U65VX347X05JOTM9LZA43871MM3YZYA4G0QLSRGDRPNIBZGDBITGVNWR5EHXAQ1HETRT2K5M3TNFP8RU3NHA209UE6K5PQFNHDAAI2ZX9VI743Z2IJYL05A1RXCIAT8LZ7Z42RWEGYRCDCTM5WIRKDHL95V1Y9J8UJOLF582V3J3G72F5RRJOZOY5KR9CBPYODIMLK193ERKSUUL543EWVKS2HX5OFG5BJ96PH64KLMIHQQ8PULZKCNX02AMMZX302EDY4UEWFOMLINQEXQRGQFGL4IJTX2KRZ5A3M3CX76B7U80QQ6N3TWYD9R6KMEMCHHSPAKX9QSOF9SPQCUSYF6JJI6NGZZFBSZKCEY5M00SS7SRJYUPL551M7PWQ58Y364XK5UC3BR8470V2EXVEC9MEIO8AWPKWK8UJ9I22LXZFEPR784ZPYKAQILR0NETYHNXP2L1XBB1R4KKLNS6JXRLUKF3CN3TL4XI4SVQ67GO5B5C6ZIOEM7P1GX77X3GFXZYZ6E96RRZ9ICDVGZV7P5G4UCT5B5HN3R5T4QWM7J9V1XBEC5NYVS1JSQPYIG0ZXO6IWPLXTBT11O0Z20M72N8N6L'
        ),
        (
            b'173JWAZOXARHJ6SEUI9DD1SOHN5VCTY8TAHPXN3QEGKSFE10SLCVAZLM5O99V8292AI9ICNM6OGX25ZVWBXF2Q0BK1HE7H206VK6DVLU8VAG5IP3S7WFET5VUSY4SZ6FF6ASGLZ0CN97ZV2XLZGF93HOI0AVBVCJ0SJI27NZR9R87NQ9VUQ5UFWB62X22Q0CASBUB1X8S23FF03VJDEK2Q2W32RCJIYN3QRSER8WZM3AOL5Y2DZMXR0RORO15RMNBCCR5WQKQIGYD7VLGU2RFPJZ100H842K9INVMGURYR3XMZDMO87J1DRVT00F1867BYOZU2ZFRHMA70OKIR98I8LNXDHNTK8NT3QXE35KEFLEIE',
            False
        ): -3665858169163958488
    }
}
```

### Using custom generators

Since we mentioned above that you can specify the types of keys and values by passing the `key_generators` and `value_generators` arguments, you can also pass custom generators. Here is a mixed example:

```python
from typing import List, Optional
from random import Random
from random_dict import random_dict, random_int, random_bool

def custom_list_generator(random_state: Optional[Random] = None) -> List[int]:
    """Return a list of 3 random integers.
    
    Parameters
    ----------
    random_state : Optional[Random]
        The random state to use for generating random numbers.
    """
    if random_state is None:
        random_state = Random()
    return random_state.choices([1, 2, 3, 4, 5], k=3)

my_random_dict = random_dict(
    max_depth=4,
    max_height=3,
    key_generators=[random_int, random_bool],
    value_generators=[random_int, random_bool, custom_list_generator]
)
```

More generated examples can be found within the [examples folder](examples/).

## License
This project is licensed under the terms of the MIT license.