2013-12-03 2 views
0

Мне нужна помощь с небольшой частью в моем коде, я немного ржавый.Изменение имен переменных на ходу, в Python

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

В основном я хочу переименовать переменные, как я иду, как есть много переменных для различных категорий, возраста, профессии, страны, расы и т.д ..

Так что-то вроде:

#(NewRecord[3] will have details of race) 
if NewRecord[3] = "black" 
var1 += blackcounter 
else if NewRecord[3] = "white" 
var1 += whitecounter` 

может быть:

for NewRecord[3] = "%s" 
var1 += "%s"counter 

??? Как мне это сделать?

... Доп информация:

Программа Я пытаюсь сделать это предсказатель доход для людей старше и под 50к в год.

whiteCountUnder50 
asianCountUnder50 
indianCountUnder50 
otherCountUnder50 
blackCountUnder50 

whiteCountOver50 
asianCountOver50 
indianCountOver50 
otherCountOver50 
blackCountOver50 

#if white 
overchance += (whiteCountOver50/TotalPeopleOver) 
underchance += (whiteCountUnder50/TotalPeopleUnder) 
print ("overchance: ", overchance) 
print ("underchance: ", underchance) 

#if black 
overchance += (blackCountOver50/TotalPeopleOver) 
overchance += (blackCountUnder50/TotalPeopleUnder) 
print ("overchance: ", overchance) 
print ("underchance: ", underchance) 

#if asian 
.... 

#if indian 
.... 

и т.д ...

ответ

2

вы можете использовать словари для этого.

container = {} 
#inserting arbitrary amount of black people 
container["black"] = 254 
#inserting arbitrary amount of white people 
container["white"] = getWhitePeople() 
print(str(container["white"])) 
#prints whatever getwhitePeople() returned 
container.update(getPairNewCategory()) 
#getPairNewCategory() returns {nameOfTheCategoryStringOrHash:initialValueInt} 
print(str(container[nameOfTheCategoryStringOrHash])) 
#prints whatever was in initialValueInt 

, что вы пытаетесь сделать, это в основном это

counter = {} 
for entry in NewRecord: 
    if entry in counter: 
     counter[entry] += 1 
    else : 
     counter[entry] = 1 

Однако самый вещий способ сделать это:

from collections import Counter 
c = Counter(NewRecord) 
c["BlackOver50"] = 123123 #whatever the number of BlackOver50 entries in NewRecord 
0

Это не совсем понятно, что вы хотите сделать здесь, но я думаю, что вы хотите словарь. Вот ссылка, чтобы описать их: http://docs.python.org/2/tutorial/datastructures.html

Вы хотите сделать что-то вроде следующего:

var1 += counter[NewRecord[3]] 

Надежда, что помогает.

+0

что это? ??? thats not python ... (по крайней мере, не 2x) –

+0

Упс, извините за это, он должен сказать counter [NewRecord [3]] not counter {NewRecord [3]}, я обычно печатаю его, чтобы убедиться, что я не делать какие-то глупые синтаксические ошибки, но, конечно, на этот раз не сделали этого. –

Смежные вопросы