【问题标题】:Entries in Nested Dictionaries嵌套字典中的条目
【发布时间】:2014-11-11 17:43:24
【问题描述】:

给定一个嵌套字典:

myDict = { 'through': { 1: 18,
                        2: 27,
                        3:  2,
                        4: 15,
                        5: 63
                        },
           'one':     { 1: 27,
                        2: 15,
                        3: 24,
                        4:  9,
                        5: 32
                        },
           'clock':   { 1:  2,
                        2:  5,
                        3:  9,
                        4:  6,
                        5: 15
                        }
           }

外键是一个单词,内键是该单词包含的文件,值是该单词在该文件中出现的次数。

如何使用文件编号来计算存在的文本文件总数?

有没有办法提取内部字典中键/值对的数量?

numOfFiles = 5

因为这里有5个文件,但是说我有几百个,它们是自动读入这本字典的,所以我必须解决?

【问题讨论】:

  • 可以向我们展示预期的输出???
  • 编辑包括:)

标签: python dictionary


【解决方案1】:

len函数计算长度:

>>>len(myDict['through'])
5

如果您想要单词以及包含多少个文件:您可以使用字典理解

>>>{ x:len(y) for x,y in myDict.items() }
{'one': 5, 'through': 5, 'clock': 5}

您要求提供键/值对:

 >>> [ y.items() for x,y in myDict.items() ]
[[(1, 2), (2, 5), (3, 9), (4, 6), (5, 15)], [(1, 18), (2, 27), (3, 2), (4, 15), (5, 63)], [(1, 27), (2, 15), (3, 24), (4, 9), (5, 32)]]

items为内部字典提供键/值对元组

如果word不存在于文件中,则检查是否大于0:

>>> myDict
{'clock': {1: 2, 2: 5, 3: 9, 4: 6, 5: 15}, 'through': {1: 18, 2: 27, 3: 2, 4: 15, 5: 63}, 'one': {1: 27, 2: 15, 3: 0, 4: 9, 5: 32}}
>>>{ x:len(filter(lambda x:x if x > 0 else False,y.values())) for x,y in myDict.items() }
{'one': 4, 'through': 5, 'clock': 5}

文件 3 中没有此文件

【讨论】:

  • 我希望这可以帮助您获得所需的输出
  • 所以这只是创建了一个普通的字典?此外,如果文件中没有单词,这会起作用吗?所以说'clock'不在文件3中并且值为0而不是24,它是否能够产生:{'one':5,'through':5,'clock':4}?
  • 文件 3 中的时钟是 9 而不是 24
  • 您可以使用bool,而不是使用 lambda
  • { x:len(filter(bool, y.values())) for x,y in myDict.items() }
【解决方案2】:

如果您想知道包含该单词的文件总数,请使用len

len(myDict['through'])

如果您需要现有文件的总数:

max([len(x) for x in myDict.values()])

【讨论】:

  • 非常感谢。如果字典有数百个外部键,我不知道某个单词是否会出现?
  • 使用第二个选项
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 2018-01-29
  • 2018-05-31
  • 2021-02-27
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
相关资源
最近更新 更多