4

addproperty(property_str, property_dict, old_dict = None)引数として文字列、1 つの辞書、および 1 つのオプションの辞書が必要な関数を作成しようとしています。関数は、対応する値がオプションの辞書に追加された新しい辞書を返す必要があります。

例えば。私が入力した場合:

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'}}

ここからどのように始めればよいですか?

4

3 に答える 3

5
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 {}
于 2013-04-26T19:06:27.330 に答える
0

このようなもの:

def add_property(item,dic,new_dic=None):
    if not new_dic:
        for k,v in dic.items():
            dic[k]={item:v}
    else:        
        for k,v in dic.items():
            dic[k].update({item:new_dic[k]})
   .....:             

In [124]: capitals_dict = {'USA': 'Washington', 'Russia': 'Moscow', 'Japan': 'Tokyo'}

In [125]: add_property("Capital", capitals_dict)

In [126]: add_property("demonym",capitals_dict,demonym_dict)

In [128]: capitals_dict
Out[128]: 
{'Japan': {'Capital': 'Tokyo', 'demonym': 'Japanese'},
 'Russia': {'Capital': 'Moscow', 'demonym': 'Russian'},
 'USA': {'Capital': 'Washington', 'demonym': 'American'}}
于 2013-04-26T19:20:46.380 に答える