Я очень новичок в c
языке, и мне очень жаль, если мой вопрос слишком прост.
Я хочу определить словарь в c
, в котором у меня есть список в качестве значениямои ключи.Другими словами, мне нравится иметь что-то вроде Python в c
:
my_dictionary = {1:{'name':'john','items':['item1','item2']},2:{'name':'bob','items':['item3','item4']}}
Тогда мне нравится иметь доступ к моему определенному словарю, как это: my_item = my_dictionary[1]['items']
.
Я знаю, что это очень легко в Python, но для c
я не смог найти хороший пример для этого.Я могу определить простые словари, такие как:
typedef struct dict_t_struct {
char *key;
void *value;
struct dict_t_struct *next;
} dict_t;
, и я могу легко добавлять, удалять или распечатывать элементы из этого словаря, используя следующие функции:
dict_t **dictAlloc(void) {
return malloc(sizeof(dict_t));
}
void dictDealloc(dict_t **dict) {
free(dict);
}
void *getItem(dict_t *dict, char *key) {
dict_t *ptr;
for (ptr = dict; ptr != NULL; ptr = ptr->next) {
if (strcmp(ptr->key, key) == 0) {
return ptr->value;
}
}
return NULL;
}
void delItem(dict_t **dict, char *key) {
dict_t *ptr, *prev;
for (ptr = *dict, prev = NULL; ptr != NULL; prev = ptr, ptr = ptr->next) {
if (strcmp(ptr->key, key) == 0) {
if (ptr->next != NULL) {
if (prev == NULL) {
*dict = ptr->next;
} else {
prev->next = ptr->next;
}
} else if (prev != NULL) {
prev->next = NULL;
} else {
*dict = NULL;
}
free(ptr->key);
free(ptr);
return;
}
}
, но проблема в том,что мне нужно иметь связанный список как значения моего словаря и внутренний словарь в моем словаре.