2013-08-19 5 views
0

EditedИспользуйте строку в качестве объекта в питон

Alright вся цель состоит в том, чтобы найти мин широты в данных объектах:

>>>g.nodes 
set([v99, v192, v60, v107, v54, v75, v16, v93, v190, v125, v193, v218, v114, v1, v180, v68, v11, v86, v82, v58, v166, v230, v98, v18, v20, v72, v221, v177, v36, v19, v97, v27, v206, v153, v233, v169, v88, v53, v229, v77, v50, v34, v90, v162, v106, v89, v67, v173, v158, v123, v214, v165, v223, v199, v155, v149, v59, v138, v69, v204, v154, v91, v119, v70, v152, v61, v121, v195, v38, v17, v66, v23, v213, v45, v13, v62, v150, v137, v136, v76, v29, v64, v207, v234, v46, v113, v41, v122, v120, v83, v203, v148, v30, v33, v191, v32, v127, v131, v2, v57, None, v81, v157, v104, v226, v139, v79, v200, v100, v186, v170, v175, v109, v172, v132, v9, v160, v96, v10, v198, v52, v87, v14, v163, v51, v144, v228, v21, v215, v201, v212, v187, v135, v209, v232, v164, v126, v161, v22, v115, v6, v133, v85, v171, v12, v183, v182, v31, v42, v111, v55, v80, v35, v211, v143, v24, v95, v56, v112, v178, v231, v4, v194, v92, v124, v117, v151, v219, v146, v94, v168, v101, v220, v39, v8, v105, v44, v40, v216, v7, v208, v197, v145, v202, v185, v205, v116, v48, v222, v217, v188, v134, v47, v5, v73, v227, v108, v156, v28, v224, v210, v176, v3, v37, v74, v167, v181, v15, v159, v118, v63, v25, v102, v110, v196, v43, v174, v103, v225, v142, v179, v128, v84, v129, v147, v78, v184, v141, v140, v189, v71, v65, v130, v49, v26]) 
>>> v99 
v99 
>>> v99.latitude 
46.933333 
>>> type(g.nodes) 
<type 'set'> 
>>> type(v99) 
<type 'org.gephi.scripting.wrappers.GyNode'> 
>>> type(v99.latitude) 
<type 'float'> 

документации плагина: http://wiki.gephi.org/index.php/Scripting_Plugin

ответ

2

Вы можете используйте locals() function для поиска местных названий:

for i in data: 
    print locals()[i] 

, но вы действительно хотите переосмыслить свою структуру данных и, возможно, использовать словарь для хранения x и y.

locals() возвращает текущее местное пространство имен в качестве словаря. Вы должны рассматривать этот словарь как доступный только для чтения, особенно в рамках функций.

+0

Спасибо за ваше предложение, однако я работаю над готовым подключаемым модулем, который имеет некоторые недостатки в его API. – Diolor

+0

@ DDL449: Внешние API делают * не * задают локальные имена. –

+1

@ DDL449 Вы не упомянули, что работаете над «готовым подключаемым модулем, который имеет некоторые недостатки в его API». Если вы переформулируете свой вопрос, чтобы рассказать нам более подробно о проблеме, которую вы пытаетесь решить, мы сможем дать ответ, который лучше подходит для вашей проблемы. –

2

Вы можете использовать locals():

In [1]: x = 'hello' 

In [2]: y = 'worlds' 

In [3]: data = set(['x', 'y']) 

In [4]: for i in data: 
    ...:  print locals()[i] 
    ...:  
worlds 
hello 

Но вы бы лучше построить словарь, как чему-л:

data = {'x': 'hello', 'y': 'worlds'} 
0

У меня есть список объектов

Литерал list объектов, начиная с структуры данных Python, называемой список, будет выглядеть следующим образом:

objectlist = ['x', 'y'] 

То, что вы описали в вашем коде не список объектов, это просто несколько случайных несвязанных объектов.

Однако довольно ясно, что вы не после списка объектов. Вы хотите, чтобы иметь возможность искать «объект, который я обозначил« x », - правильная структура данных для этого - это то, что Python называет dict, что другие языки называют сопоставлением, или ассоциативный массив, или хеш-таблицу. Затем вы можете использовать значения от data для поиска соответствующих значений в dict.

>>> objectdict = {'x': 'hello', 'y': 'world'} 
>>> data = set(['x', 'y']) 
>>> for i in data: 
...  print objectdict[i] 
... 
world 
hello 
>>> 
Смежные вопросы