访问两个列表元素以获得结果

时间:2016-06-14 20:30:13

标签: python

我有两个清单。一个列表名称“日期”中包含与人员出生日期相关的日期。

data = [ datetime.datetime(1958, 3, 15, 0, 0), datetime.datetime(1958, 9, 15, 0, 0), datetime.datetime(1930, 10, 23, 0, 0), datetime.datetime(1928, 9, 15, 0, 0), datetime.datetime(1928, 1, 23, 0, 0), datetime.datetime(1925, 11, 15, 0, 0), datetime.datetime(1962, 7, 20, 0, 0),datetime.datetime(1960, 12, 14, 0, 0), datetime.datetime(1960, 5, 10, 0, 0),datetime.datetime(1963, 9, 7, 0, 0), datetime.datetime(1956, 3, 10, 0, 0), datetime.datetime(1955, 2, 15, 0, 0),datetime.datetime(1958, 11, 14, 0, 0),datetime.datetime(1956, 8, 24, 0, 0),datetime.datetime(1990, 4, 30, 0, 0)] 

现在,下一个列表包含结婚日期。

marriage = [ datetime.datetime(1985, 5, 14, 0, 0),datetime.datetime(1945, 6, 15, 0, 0), datetime.datetime(1938, 6, 11, 0, 0), datetime.datetime(1995, 4, 5, 0, 0), datetime.datetime(1987, 2, 26, 0, 0), datetime.datetime(1983, 12, 13, 0, 0), datetime.datetime(1980, 9, 16, 0, 0),  datetime.datetime(2011, 6, 19, 0, 0)]

“婚姻”列表中的每个日期与“日期”列表中的2个日期相关。现在,我想将婚姻清单中的一个日期与日期清单中的两个日期进行比较,以便我可以打印“出生日期少于婚姻。

如何使用循环完成此任务?与这个混淆了。

请注意,我使用了导入日期时间,导入re来完成日期比较。

2 个答案:

答案 0 :(得分:0)

for i in range(len(data)):
  if data[i] < marriage[i]:
    print "birthdate is lt marriage date"
  else:
    print "birthdate is gt or eq to marriage date"

我不确定你要在这里完成什么...你也不需要重新进行日期比较,你可以使用普通的< > == <= >=运营商。

这听起来像哈希(字典)的工作......

marriage = {
    'marriage1' : {
        '1' : <birthday>,
        '2' : <birthday>,
        'marriage-date' : <marriage-date>
    },
   'marriage2' : {
        '1' : <birthday>,
        '2' : <birthday>,
        'marriage-date' : <marriage-date>
    }
}

哈希(字典)可以使不包含相同数量值的列表更容易进行比较。

答案 1 :(得分:-1)

这假设婚姻和出生日期是相同的顺序(即,前两个出生日期对应于第一个结婚日期,接下来的2个出生日期对应于第二个结婚日期)

for i in range(len(marriage)):
    if marriage[i] > data[i*2] and marriage[i] > data[(i*2)+1]:
        print "Both birthdates less than marriage data"

我相信我的假设是正确的,因为数据列表中的条目数量是结婚清单中的两倍。