Вы можете сделать это с помощью памяти кучи (через вызов malloc () ), как и другие ответы, описанные здесь, но вы всегда должны управлять памятью (используйте функцию free () каждый раз, когда вы вызываете свою функцию). Вы также можете сделать это со статическим массивом:
char* returnArrayPointer()
{
static char array[SIZE];
// do something in your array here
return array;
}
Вы можете использовать его, не беспокоясь об управлении памятью.
int main()
{
char* myArray = returnArrayPointer();
/* use your array here */
/* don't worry to free memory here */
}
В этом примере вы должны использовать статическое ключевое слово в определение массива, чтобы установить продолжительность жизни массива в приложении, поэтому он не будет уничтожен после оператора return. Разумеется, таким образом вы занимаете байты SIZE в своей памяти на весь срок службы приложения, поэтому его размер будет правильным!
Вы можете составить желаемый список путем понимания списка:
d2=[
{'Name': 'Joe', 'Id': '001', 'Major': 'Math'},
{'Name': 'Kyle', 'Id': '002', 'Major': 'Coms'}
]
d3={x['Name']+" "+x['Id'] : x['Major'] for x in d2}
print (d3)
#{'Joe 001': 'Math', 'Kyle 002': 'Coms'}
Как заметил пользователь roganjosh, лучший способ - создать ключи кортежей.
Это делается путем зацикливания ваших рядов и добавления к этому слова.
my_dict = {}
for row in rows:
my_dict[(row.Name, row.Id)] = row.Major
НЕ просто добавляйте их как строки. Поскольку Name и Id уникальны друг для друга, нет никакой гарантии, что их конкатенация также уникальна. EX. Имя: joe0 Id: 01 и Name: joe Id: 001 совпадают при объединении. Сохраните их как кортежи, чтобы быть в безопасности.
Предполагая, что данные находятся в pandas.Dataframe, вы можете изменить данные и использовать pandas.DataFrame.to_dict . Например:
df['Key']=df['Name']+df['Id'] #combine the two columns you want to make keys
df=df.drop(['Name','Id'],axis=1).set_index('Key').T.to_dict('list')
После объединения двух столбцов я установил Key в качестве индекса, а затем транспонировал. Это избавит от имен столбцов из индекса. Затем я конвертирую его в словарь.