【问题标题】:why use a dictionary if a List combined with Tuples offers way more flexibility?如果列表与元组结合提供了更大的灵活性,为什么还要使用字典?
【发布时间】:2021-03-21 12:58:22
【问题描述】:

Python 新手,正在尝试学习如何使用字典,但老实说,你没有看到重点,你被限制为 2 对,而如果我只是用元组创建一个列表,我会获得更大的灵活性

在下面的代码中,我列出了超级英雄,您可以在其中查找 姓名(蝙蝠侠)、身份(布鲁斯·韦恩)或宇宙(DC)

不能在字典上做到这一点(你只能对 2 个)那么我为什么需要字典呢?

Superheroes = [('Batman','Bruce Wayne','DC'),('Spiderman','Peter Parker','Marvel'),('Superman','Clark Kent','DC'),('Ironman','Tony Stark','Marvel'),('Green Arrow','Oliver Queen','DC')]
user_selection = input()

for (name,identity,universe) in Superheroes:
  if name==user_selection or identity == user_selection or universe == user_selection:
    print('Hero:' + name + '\nSecret Identity:' + identity + '\nUniverse:'+ universe)
  else:
    continue

【问题讨论】:

  • 因为字典不需要顺序搜索。
  • 大多数字典的使用不需要像这样搜索所有字段。
  • 好吧,但这也不对吗?
  • 您正在进行顺序搜索。
  • @falconflyer75:此循环检查Superheroes 中的每个条目;如果您有 5000 万个条目,那就是 1.5 亿次检查(5000 万个条目中的每个条目进行三个测试)。可以制作三个collections.defaultdict(list),由每个字段键入(一个带有name 键,一个带有identity 键,一个带有universe 键),附加lists 匹配值,减少检查次数到 3,每个dict 一个,以便宜地获取所有匹配条目。在这种情况下,数据库可能会更好地工作,并允许更复杂的查询,并具有与dicts 相似的性能优势。

标签: python list dictionary search tuples


【解决方案1】:

字典的大多数用途不需要在键和值中都搜索匹配项。您设计您的数据结构,以便您通常需要查找的项目是字典键。

例如,如果您有食谱中的成分数据,那么您几乎总是会根据您正在烹饪的菜肴来查找它。所以你把它作为关键,你可以通过一次查找而不是搜索整个列表来获取所有成分。

如果您偶尔需要在值中查找某些内容,您仍然可以使用 dict.entries() 遍历字典。如果您需要经常查找不同的组件,您可以创建多个字典,它们都使用不同的键引用相同的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多