[英]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.