gpt4 book ai didi

python - 计算字典中键值对的数量

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:02 28 4
gpt4 key购买 nike

我是第一次使用字典。我想知道如何计算每个字典中值“可用”的键值对的数量。我知道我可能会使用 len()

seats = {
'A': {'A1':'available', 'A2':'unavailable', 'A3':'available'},
'B': {'B1':'unavailable', 'B2':'available', 'B3':'available'},
'C': {'C1':'available', 'C2':'available', 'C3':'unavailable'},
'D': {'D1':'unavailable', 'D2':'available', 'D3':'available'} }

rowChoice = raw_input('What row? >> ')
numSeats = input('How many Seats? >> ')

我对此很陌生,所以我真的需要一个非常简单的方法,可能还需要一些注释或解释它是如何工作的。

最佳答案

我将使用以下语句来计算每个嵌套字典的值:

{k: sum(1 for val in v.itervalues() if val == 'available') for k, v in seats.iteritems()}

这会根据与 seats 相同的键构建一个新字典,每个值都是可用座位数。具有生成器技巧的 sum(..) 有效地计算包含的每行字典的所有值,其中值等于 'available'

结果:

{'A': 2, 'C': 2, 'B': 2, 'D': 2}

要显示特定行的可用座位,您可以过滤并使用 len():

row_available = [k for k, v in seats[rowChoice].iteritems() if v == 'available']
avail_count = len(row_available)
if avail_count:
print 'there {is_are} {count} seat{plural} available in row {rowChoice}, seat{plural} {seats}'.format(
is_are='are' if avail_count > 1 else 'is', count=avail_count,
plural='s' if avail_count > 1 else '', rowChoice=rowChoice,
seats=row_available[0] if avail_count == 1 else ' and '.join([', '.join(row_available[:-1]), row_available[-1]]))

对于 rowChoice = 'A' 打印:

there are 2 seats available in row A, seats A1 and A3

但它也会针对更多或更少的座位进行调整以形成连贯的句子。

关于python - 计算字典中键值对的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031964/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com