2015-02-20 4 views
-2

У меня есть этот массив:как добавить в целое число в Python

listPatients = [[ "Johnson", "Fred", "N", "2763 Filibuster Drive", "Lakeland", "FL", "37643", "Q", "05/27/1935", "164-55-0726", "N"]] \ 
+    [[ "Williams", "Betty", "L", "701 Collage Avenue", "Orlando", "FL", "31234", "F", "11/27/1971", "948-44-1038", "Y"]] \ 
+    [[  "Ling", "Hector", "X",  "1500 Raceway Lane",  "Tampa", "FL", "32785", "M", "10/17/2003", "193-74-0274", "Y"]] \ 
+    [[ "Albin", "Ross", "L",  "207 Daisy Avenue", "Lakeland", "FL", "32643", "M", "12/08/1990", "458-57-2867", "N"]] \ 
+    [[ "Anderson", "Jason", "O",  "1527 Lewis Road",  "Tampa", "FL", "32785", "M", "11/25/1991", "093-50-1093", "Y"]] \ 
+    [[  "Baca", "Edwin", "L",  "25 Hunters Lane", "Lakeland", "FL", "32643", "M", "10/30/1992", "159-56-9731", "Y"]] \ 
+    [[ "Birner", "Dalton", "M",  "851 Applebe Court", "Orlando", "FL", "31234", "M", "09/22/1993", "695-21-2340", "Y"]] \ 
+    [["Dominguez", "Javier", "B", "1410 Waterford Blvd", "Orlando", "FL", "31234", "M", "08/04/1994", "753-66-6482", "N"]] \ 
+    [[ "Aimino", "Nicolo", "S",  "2379 Runners Way", "Lakeland", "FL", "32643", "M", "07/11/1995", "852-73-4196", "Y"]] \ 
+    [["Armstrong","Addison", "T", "46 Hawthorne Drive", "Lakeland", "FL", "32643", "M", "06/18/1996", "648-81-1456", "Y"]] \ 
+    [[ "Beard", "Ian", "J", "1814 Constitution Ct", "Orlando", "FL", "31234", "M", "05/28/1997", "879-61-1829", "N"]] \ 
+    [[ "Calderon", "Yamil", "C",   "345 Cigar Row",  "Tampa", "FL", "32785", "M", "04/07/1998", "123-87-6431", "Y"]] \ 
+    [[ "Carter", "Thomas", "P",  "896 Pine Avenue",  "Tampa", "FL", "32785", "M", "03/12/1999", "248-65-3197", "Y"]] \ 
+    [[ "Chaname", "Bryan", "D", "24 Blue Belt Drive",   "Lakeland", "FL", "32643", "M", "02/23/2000", "741-85-9632", "Y"]] \ 
+    [[ "Chaney", "Chaney", "Z", "2589 College Court",  
"Orlando", "FL", "31234", "M", "01/15/2001", "963-25-7418", "Y"]] 

Я хочу, чтобы добавить возраст; который является calulation после приема года рождения (индекс (массив (элемент [7]))) и вычитая его из 2015 года:

for patients in range(len(listPatients)): 
    YOB=listPatients[patients][8][6]+listPatients[patients][8][7] 
    +listPatients[patients][8][8]+listPatients[patients][8][9] 
age= currentYear-int(YOB) 
story4=patients.append(age) 

Выхода говорит, что я не могу присоединять целое. Что я могу сделать?

+0

Вы можете добавить полный отслеживающий? –

+0

Я думаю, что он говорит, что '' int 'объект не имеет атрибута' append'' –

+0

пациентов не является списком в этом случае –

ответ

-1

Вы хотите appent к элементу listPatients, а не диапазон его:

for patients in range(len(listPatients)): 
    YOB=listPatients[patients][8][6]+listPatients[patients][8][7]+listPatients[patients][8][8]+listPatients[patients][8][9] 
    age= currentYear-int(YOB) 
    story4=listPatients[patients].append(age) 
+0

Почему downvote? Я сам запустил этот код на данные OPs и ** он отлично работает **. Кто бы ни старался, объясните? –

+0

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

+0

, чтобы отменить его для вас :) –

0

В вашем фрагменте кода patientsявляетсяint, который не имеет append метода.

>>> range(len(['x','y','z'])) 
[0, 1, 2] 

Каждый элемент в итераторе диапазона будет целочисленным.

+0

, так что я должен (строка)? @ C.B. –

+0

@JoshuaPilkin, что такое 'story4'? –

+0

Вывод истории4 будет моим пациентом. @ C.B. –

1

В вашем коде patients - это индекс в списке списка, а не сам подсписчик, т. Е. С patients.append(age), который вы пытаетесь добавить в число! Вместо этого попробуйте выполнить итерацию по самому listPatients. Кроме того, вы можете использовать срез [6:] вместо конкатенации всех этих отдельных символов года или использовать patients[8].split('/')[2], чтобы получить год.

for patients in listPatients: 
    YOB = patients[8][6:] # or patients[8].split('/')[2] 
    age = currentYear - int(YOB) 
    patients.append(age) 

Кроме того, append не возвращает ничего, так что все story4 должно быть, она всегда будет None.

Наконец, вы можете написать список из нескольких строк списков, как это:

listPatients = [[ "Johnson", ... stuff ..., "164-55-0726", "N"], 
        ... many more lines ... 
        [ "Chaney", ... stuff ..., "963-25-7418", "Y"]] 
1

Там нет причин использовать range для итерации здесь.

for patient in listPatients: 
    YOB=patient[8][-4:] 
    age= currentYear-int(YOB) 
    patient.append(age) 
    story4=age 
Смежные вопросы