我正在编写一个程序,我在这样的列表中有一堆元组:
[('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')
等。
元组是格式
(animal ID, date(month, day, year), station# )
我不知道如何访问有关该月份的信息。
我试过了:
months = []
for item in list:
for month in item:
if month[0] not in months:
months.append(month[0])
我在python 3工作。
答案 0 :(得分:9)
L = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
for animal, date, station in L:
month, day, year = date.split('-')
print("animal ID {} in month {} at station {}".format(animal, month, station))
输出:
animal ID a01 in month 01 at station s1
animal ID a03 in month 01 at station s2
答案 1 :(得分:1)
基本思想是获取元组的第二项,即字符串,然后获取字符串的前两个字符。那些角色描述了月份。
我将逐步完成整个过程。
我们假设您有一个名为data
的列表:
data = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
取第一项:
item = data[0]
item
的值是元组('a01', '01-24-2011', 's1')
。
取item
的第二个元素:
date = item[1]
date
的值是字符串'01-24-2011'
。
取date
的前两个字符:
month = date[:2]
month
的值是字符串01
。您可以将其转换为整数:
month = int(month)
现在month
的值为1
。
答案 2 :(得分:1)
使用列表推导:
data = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
months = [item[1].split('-')[0] for item in data]
print(months)
答案 3 :(得分:0)
>>> my_list = [('a01', '01-24-2011', 's1'), ('a03', '01-24-2011', 's2')]
>>> [ x for x in map(lambda x:x[1].split('-')[0],my_list) ]
['01', '01']
你可以使用map和lambda
答案 4 :(得分:0)
如果您只想要一个独特的月份列表,那么订单无关紧要使用一套:
months = list({date.split("-",1)[0] for _, date, _ in l})