python - Python 3 中字典中的字典

标签 python dictionary

我想创建一个函数addproperty(property_str, property_dict, old_dict = None),我需要一个字符串、一个字典和一个可选字典作为参数。 该函数需要返回一个新字典,其中将相应的值添加到可选字典中。

例如。如果我输入:

capitals_dict = {'USA': 'Washington', 'Russia': 'Moscow', 'Japan': 'Tokyo'}

函数addproperty('capital', capitals_dict)需要返回如下字典

{'USA': {'capital': 'Washington'}, 'Russia': {'capital': 'Moscow'}, 'Japan': {'capital': 'Tokyo'}}

当我在可选参数中输入该词典时,我还需要能够扩展该词典以向这些国家/地区添加新的详细信息。

例如:

old_dict = {'USA': {'capital': 'Washington'}, 'Russia': {'capital': 'Moscow'}, 'Japan': 'capital': 'Tokyo'}}
demonym_dict = {'USA': 'American', 'Russia': 'Russian', 'Japan': 'Japanese'}

然后 addproperty('demonym', demonym_dict, old_dict) 需要返回:

{'USA': {'capital': 'Washington', 'demonym': 'American'}, 'Russia': {'capital': 'Moscow', 'demonym': 'Russian'}, 'Japan': {'capital': 'Tokyo', 'demonym': 'Japanese'}}

我应该如何从这里开始?

最佳答案

def addproperty(property_str, property_dict, old_dict=None):
    result = old_dict if old_dict is not None else {}
    for k, v in property_dict.items():
        result.setdefault(k, {})[property_str] = v
    return result

例如:

>>> capitals_dict = {'USA': 'Washington', 'Russia': 'Moscow', 'Japan': 'Tokyo'}
>>> result = addproperty('capital', capitals_dict)
>>> result
{'Japan': {'capital': 'Tokyo'}, 'Russia': {'capital': 'Moscow'}, 'USA': {'capital': 'Washington'}}
>>> demonym_dict = {'USA': 'American', 'Russia': 'Russian', 'Japan': 'Japanese'}
>>> addproperty('demonym', demonym_dict, result)
{'Japan': {'demonym': 'Japanese', 'capital': 'Tokyo'}, 'Russia': {'demonym': 'Russian', 'capital': 'Moscow'}, 'USA': {'demonym': 'American', 'capital': 'Washington'}}

请注意,如果提供,这将修改 old_dict。如果这是一个问题,请导入复制模块并将函数中的第一行替换为以下内容:

result = copy.deepcopy(old_dict) if old_dict is not None else {}

关于python - Python 3 中字典中的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243437/

相关文章:

python - Ansible:将对象列表传递给 python 脚本

python - 在 Pandas 数据框中删除特定的 multiIndex 列

python - Django 模型 OneToOneField : "This field is required" error in admin

python - 嵌入式系统最佳Python框架(内存64MB,硬盘256MB)

python - 将复杂的列(类似字典)转换为多个列

c++ - 在 C++03 中用构造数据填充 map<string, string> 的最可读(代码方面)方式

c# - C# 中固定深度的树状数据的最佳数据结构是什么?

python - 获取字典/json中键的类型

python - 重构这个分组密码键控函数

java - 如何使用字符串键对 map 进行排序?像(1英尺,2英尺)