将列表与字典进行比较,并输出true和fals

2024-05-15 12:50:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,上面有这样的日期:

listdates = [datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25), datetime.date(2016, 4, 26), datetime.date(2016, 4, 27)]

我有一本日期如下的字典:

dictdates = {'S1': [datetime.date(2016, 4, 20), datetime.date(2016, 4, 21), datetime.date(2016, 4, 22), datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25), datetime.date(2016, 4, 26), datetime.date(2016, 4, 27), datetime.date(2016, 4, 28), datetime.date(2016, 4, 29)], 'W26': [datetime.date(2016, 4, 20), datetime.date(2016, 4, 21), datetime.date(2016, 4, 22), datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25)], 'W24': [datetime.date(2016, 4, 25)]}

我想将列表与字典进行比较,如果列表中的值与字典中的值匹配,则应该打印不可用。你知道吗

我有以下工作:

for val in listdates:
   if val in dictdates['S1']:
      print val, 'unavailable'
   else:
      print val, 'available'

这将产生以下输出:

2016-04-23 unavailable
2016-04-24 unavailable
2016-04-25 unavailable
2016-04-26 unavailable
2016-04-27 unavailable

相反,我希望遍历字典中的每个列表,并输出带有available/unavailable的键,如下所示:

S1
2016-04-23 unavailable
2016-04-24 unavailable
2016-04-25 unavailable
2016-04-26 unavailable
2016-04-27 unavailable

W26
2016-04-23 unavailable
2016-04-24 unavailable
2016-04-25 unavailable
2016-04-26 unavailable
2016-04-27 unavailable

W24
2016-04-23 available
2016-04-24 available
2016-04-25 unavailable
2016-04-26 available
2016-04-27 available

etc ...

Tags: in列表fordatetimedate字典valavailable
3条回答

循环浏览字典和循环中的列表,并输出您要查找的信息

for key, value in dictdates.items():
    print key
    for val in listdates:
       if val in value:
          print val, 'unavailable'
       else:
          print val, 'available'
    print "\n"
import datetime

listdates = [datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25), datetime.date(2016, 4, 26), datetime.date(2016, 4, 27)]
dictdates = {'S1': [datetime.date(2016, 4, 20), datetime.date(2016, 4, 21), datetime.date(2016, 4, 22), datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25), datetime.date(2016, 4, 26), datetime.date(2016, 4, 27), datetime.date(2016, 4, 28), datetime.date(2016, 4, 29)], 'W26': [datetime.date(2016, 4, 20), datetime.date(2016, 4, 21), datetime.date(2016, 4, 22), datetime.date(2016, 4, 23), datetime.date(2016, 4, 24), datetime.date(2016, 4, 25)], 'W24': [datetime.date(2016, 4, 25)]}

for key in dictdates:
    print key
    for val in listdates:
        if val in dictdates[key]:
            print val, 'unavailable'
        else:
            print val, 'available'

您还需要循环查看字典的键:

for key, dates in dictdates.items():
    print key
    for val in listdates:
       if val in dates:
          print val, 'unavailable'
       else:
          print val, 'available'

相关问题 更多 >