Python 如何比较字典中的值

Python 如何比较字典中的值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,如果我有一本这样的字典 times = {'personA': [9,10,11,15,16,18,19],'personB': [12,14,15,16,19]} 我正在努力寻找这两个人有空的时间。这是两个人不可用的“阻塞”时间。所以9,10,11是上午9点到11点,15,16是下午3点到4点,依此类推。 我想找出1-24之间的所有数字,这两个人都有。有没有一种简单的方法可以做到这一点?使用集合而不是列表 e、 g 我将创建一组所有可用时间,并从中删除任何人都不可用的所有插槽: availa

如果我有一本这样的字典

times = {'personA': [9,10,11,15,16,18,19],'personB': [12,14,15,16,19]}
我正在努力寻找这两个人有空的时间。这是两个人不可用的“阻塞”时间。所以9,10,11是上午9点到11点,15,16是下午3点到4点,依此类推。
我想找出1-24之间的所有数字,这两个人都有。有没有一种简单的方法可以做到这一点?

使用集合而不是列表

e、 g


我将创建一组所有可用时间,并从中删除任何人都不可用的所有插槽:

available = set(range(12,25))
for v in times.values():
    available = available - set(v)

你试过什么办法来解决它吗?此外,您在
personB
中缺少一个结束时间
]
。您可以使用集合并检查它们的联合,以快速找到至少一方的所有阻止时间。OP想知道如何找到它们都可用的时间。这些是它们不可用的时间。@我循环字典中的所有列表,并将它们全部从可用时间中删除。任何时候,如果至少有一个人不在,就会从结果中删除。事实上,我太仓促了
available = set(range(12,25))
for v in times.values():
    available = available - set(v)
times = {'personA': [9,10,11,15,16,18,19],'personB': [12,14,15,16,19]}
# Just a set with all 24 hours because
whole_day = {x for x in range(25)}

# Getting available time for both since it's what we need in fact, not busy time
free_times = {key: whole_day - set(value) for key, value in times.items()}

# Getting intersection of those free hours -> result
common_free_time = free_times['personA'] & free_times['personB']
times = {'personA': [9,10,11,15,16,18,19],'personB': [12,14,15,16,19]}
combined = times['personA'] + times['personB']
all_times = [i for i in range(1, 25)]
result = [x for x in all_times if x not in combined]