Python在dict()键中使用string?

时间:2015-11-26 12:53:26

标签: python dictionary

假设我有这个基础词典:

main = {'a': 10}

然后我还有另外两个使用main作为起点的词典:

some_new_dict1 = dict(main, b=20, some_other_key=100)
some_new_dict2 = dict(main, c=20, some_other_key2=200)

但问题是bc键,这些都不是固定的。这取决于其他价值观。

在我的案例中,要评估分配给哪个字典的键是这样的:

some_map = {True: 'b', False: 'c'}

# Evaluate if its true or false

answer = something > 0 # something is variable that changes. 
#It can be greater than zero or lower than zero (but not zero).

dict1_key, dict2_key = some_map[answer], some_map[not answer]

现在我有这些键的字符串形式,但我不知道如何通过dict分配它。如果它甚至可能。

所以现在我这样做了:

some_new_dict1 = dict(main, some_other_key=100)
some_new_dict1[dict1_key] = 20
# Same for another dict

所以基本上我需要创建字典,然后用一个键/值对更新它,即使我在创建该字典之前知道该键/值对。还有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

main = {'a': 5}
dict_key1 = 'test_key'
dict_val1 = 5

some_new_dict = dict(main, other_key=5, **{dict_key1: dict_val1})

虽然,我发现你现在使用的两步法更具可读性,所以我觉得它更好。

答案 1 :(得分:0)

如果您想选择可读性,可以使用复制,也可以将您的映射打包到该行:

some_new_dict1 = main.copy()
some_new_dict1[some_other_key] = 100
some_new_dict1['b' if answer else 'c'] = 20

顺便说一句,您的dict2_key的评论#It can be greater than zero or lower than zero (but not zero).为false。 [not answer]包含零,如果它对您的程序逻辑有所影响。