2015-03-14 3 views
0

Когда я выполнить следующий код,Чередование атрибутов в списке соединений с помощью питона

department=[] 
for dpmt in departments: 
    department.append(dpmt) 
print department 

результат выходит следующим образом:

[('d009', 'Customer Service'), ('d005', 'Development'), ('d002', 'Finance'), ('d003', 'Human Resources'), ('d001', 'Marketing'), ('d004', 'Production'), ('d006', 'Quality Management'), ('d008', 'Research'), ('d007', 'Sales')] 

Я хотел бы вынимают ведущую характер, «д ', во всех атрибутах. Я попытался это, но он doens't работать

department.sort() 
for id, dpmt in department: 
    id=id.lstrip('d') 

Это выводит тот же результат

[('d001', 'Marketing'), 
('d002', 'Finance'), 
('d003', 'Human Resources'), 
('d004', 'Production'), 
('d005', 'Development'), 
('d006', 'Quality Management'), 
('d007', 'Sales'), 
('d008', 'Research'), 
('d009', 'Customer Service')] 

Что я делаю неправильно?

+0

Почему бы и нет. 'department.append ((dpmt [0] [1:], dpmt [1]))' или 'для dept_id, dept_name в отделах: department.append ((dept_id [1:], dept_name))'? Строки Python * неизменяемы *; создание новой строки не влияет на объект в списке. – jonrsharpe

+0

Я довольно новичок в этом вопросе и пытаюсь изучить все его аспекты! Спасибо за предложение, @jonrsharpe :) – user3349070

ответ

1

Вы назначаете id.lstrip("d") на имя id (кстати, не используйте имена, разделяемые встроенными функциями), поэтому изменение не отражается в списке.

department[:] = [(id_.lstrip("d"), dpmt) for (id_, dpmt) in sorted(departments)] 
+0

Удивительный! который работал как шарм ... большое вам спасибо @Sire R Navith – user3349070

0

Простые пояснения: вы меняете копии «ключей».

department = map(lambda d: (d[0].lstrip('d'), d[1]), department) 

Попробуйте что-нибудь подобное.