繁体   English   中英

Python:词典中的词典?

[英]Python: Dictionary within dictionary?

我在尝试执行一个非常简单的练习时需要帮助,只是在语法上我有点迷路。

基本上,我阅读了一个非常简短的文本文件,其中包含15行的3个元素(基本上是2个键和一个值)

  • 将这些元素放入由字典组成的字典中
  • 第一个字典包含位置,第二个字典包含项的类型及其费用

例如:

Location   Item     Cost
------------------------
gymnasium  weights  15 

market     cereal   5

gymnasium  shoes    50

saloon     beer     3

saloon     whiskey  10

market     bread    5

这将导致

{'gymnasium': {'weights': 15, 'shoes': 50}
等等其他键

基本上,我需要遍历此文件,但是我很难读取内容作为辞典。 此外,没有那部分,我无法弄清楚如果外部列表中的键实例发生,如何将内部列表追加到外部列表。

这看起来像是作业,因此我仅提供一些提示。

您可能知道这是创建新字典的方式:

d = {}

在字典中添加条目:

d[key] = value

更具体地说,添加一个条目,其键为字符串,其值为另一个字典:

d["gymnasium"] = {}

现在,只要将d["gymnasium"]作为较大表达式的一部分编写,就可以访问该内部字典,并且可以对其执行常规的字典操作,例如,使用[]=向其中添加一些内容它:

d["gymnasium"]["weights"] = 15

如果允许使用stdlib,则collections.defaultdict对您可能非常有用。 它会使用您定义的函数自动创建尚不存在的任何键,因此:

import collections

dd = collections.defaultdict(dict)
dd['a']['b'] = "foo"

将创建如下结构:

{'a': {'b': 'foo'}}

如果不能使用defaultdict,则必须使用dict.setdefault或测试成员资格,然后才能分配给更深的dict。

dd = {}
location, item, cost = ("gymnasium", "weights", 15)

# Either
if location in dd:
    dd[location][item] = cost
else:
    # dd[location] does not exist yet!
    dd[location] = {item: cost}

# Or
dd.setdefault(location, {})[item] = cost

# Or with defaultdict
ee = collections.defaultdict(dict)
ee[location][item] = cost  # creates automagically

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM