Как сказал Джо Паттен, панды упрощают работу, вы можете конвертировать свой словарь в информационный фрейм, делать свои вещи и затем преобразовывать их обратно в словарь, если хотите:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
ser = pd.Series(METTS_MARK) #I am using your METTS_MARK
ser.replace('NaN',0,inplace=True)
ser.drop(index="email_address",inplace=True) #to make everything numerical so we can scale, you can add it back later
df = pd.DataFrame(ser)
scaler = MinMaxScaler()
df[0] = scaler.fit_transform(df)
после того, как вы закончите :
newDict = df[0].to_dict()
Вы могли использовать WMIService? Я использовал его для получения MAC-адреса машины в дни перед Vista все же.
Это даст Вам список всех MAC-адресов на Вашем компьютере. Это будет работать со всеми версиями Windows также:
void getdMacAddresses(std::vector<std::string> &vMacAddresses;)
{
vMacAddresses.clear();
IP_ADAPTER_INFO AdapterInfo[32]; // Allocate information for up to 32 NICs
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo( // Call GetAdapterInfo
AdapterInfo, // [out] buffer to receive data
&dwBufLen); // [in] size of receive data buffer
//No network card? Other error?
if(dwStatus != ERROR_SUCCESS)
return;
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
char szBuffer[512];
while(pAdapterInfo)
{
if(pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET)
{
sprintf_s(szBuffer, sizeof(szBuffer), "%.2x-%.2x-%.2x-%.2x-%.2x-%.2x"
, pAdapterInfo->Address[0]
, pAdapterInfo->Address[1]
, pAdapterInfo->Address[2]
, pAdapterInfo->Address[3]
, pAdapterInfo->Address[4]
, pAdapterInfo->Address[5]
);
vMacAddresses.push_back(szBuffer);
}
pAdapterInfo = pAdapterInfo->Next;
}
}
GetAdaptersInfo () является официальным методом, он перечисляет все адаптеры даже, которые разъединяются.
См., что это сообщение, например, кодирует codeguru
Можно использовать WMI и на XP и на Vista, онлайн существует много примеров. например: Используйте инструментарий управления Windows (WMI) для получения MAC-адреса