Вот список возможных свойств:
In[1]:= properties={"red","green","blue","big","small","rounded","spiky"};
А вот список объектов с некоторыми из этих свойств
In[2]:= list={{"blue","big","rounded"},{"red","small","spiky"},
{"red","big","rounded"},{"blue","small","spiky"}};
Вы можете найти все объекты, которые имеют свойство, например, быть "синим", используя Select
In[3]:= Select[list, MemberQ[#,"blue"]&]
Out[3]= {{blue,big,rounded},{blue,small,spiky}}
Это может быть заключено в функцию. Хотя то, как я напишу эту функцию, будет зависеть от структур данных и использования, которые вы планируете.
На самом деле, я просто перечитал ваш вопрос, у вас есть список объектов с некоторыми свойствами, и вы хотите ссылаться на эти объекты по имени. Таким образом, вы, вероятно, хотите что-то еще, как
In[1]:= listProperties["A"]:={"blue","big","rounded"}
listProperties["B"]:={"red","small","spiky"}
listProperties["C"]:={"red","big","rounded"}
listProperties["D"]:={"blue","small","spiky"}
Выше я определил некоторые свойства, которые связаны с определенными строками. Вам не нужно использовать строки выше или ниже, и вы можете создать лучшую структуру, чем эта, если хотите. Вы также можете сделать конструктор для создания вышеупомянутого, такой конструктор также может проверить, имеет ли список предоставленных свойств правильную форму - то есть не имеет противоречивых свойств, все в списке известных свойств и т.д ...
Затем мы определяем функцию для проверки, имеет ли объект / строка определенное свойство, связанное с ним
In[2]:= hasProperty[obj_, property_]:=MemberQ[listProperties[obj],property]
Возможно, вы захотите вернуть сообщение об ошибке или предупреждение, если listProperties[obj]
не имеет определения / правила, связанного с ним.
Используйте Select
, чтобы найти все "объекты" в списке, у которых есть связанное свойство "синий":
In[3]:= Select[{"A","B","C","D"}, hasProperty[#,"blue"]&]
Out[3]= {A,D}
Существуют и другие способы (возможно, более эффективные) для настройки такой структуры данных. Но это один из самых простых способов в Mathematica.