使用python中的词典字典

时间:2016-01-30 20:23:43

标签: python dictionary

我想要下面的代码实现的是,对于具有较小临时密钥值的字典,在该字典中添加一个带有“永久”键的值,并且该值与临时密钥的值相同。

Variable="a"
a_list={'a': {'c': '2', 'b': '1'}, 'c': {'a': '2', 'b': '3'}, 'b': {'a': '1', 'c': '3'}}
a_list[Variable]["permanent"]="1"
for item in a_list[Variable].keys():
    try:
        if a_list[Variable][item]!=0:
            a_list[item]["temporary"]=a_list[Variable][item]
    except KeyError:
        pass
for item in a_list.keys():
    if "permanent" in a_list[item].keys():
        del a_list[item]

print a_list

现在的输出是

{'c': {'a': '2', 'b': '3', 'temporary': '2'}, 'b': {'a': '1', 'c': '3', 'temporary': '1'}}

但是在添加声明之后我希望输出为

{'c': {'a': '2', 'b': '3', 'temporary': '2'}, 'b': {'a': '1', 'c': '3', 'temporary': '1', 'permanent': '1'}}

我不知道如何通过比较两个词典中的两个临时键来实现这一点。 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

min函数将遍历列表。如果给定一个特殊的key=命名参数,它将使用作为key=函数传入的单参数函数来提取用于比较目的的值。

您只使用包含数字的字符串来显示字典。因此,最大字符串是'A'(比数字晚一些)。所以:

max_value = 'A'
min_temp = min(a_list.keys(), key= lambda k: a_list[k].get('temporary', max_value))

此时,min_temp的{​​{1}}中的第一个键具有sub-dict键'temporary'的最低值,或者如果没有该子键,则a_list返回keys()的第一个键。 1}}(默认值为max_value)。所以让我们仔细检查它是否是一个有效的匹配:

if 'temporary' in a_list[min_temp]:
    a_list[min_temp]['permanent'] = a_list[min_temp]['permanent']