假设我有这个基础词典:
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)
但问题是b
和c
键,这些都不是固定的。这取决于其他价值观。
在我的案例中,要评估分配给哪个字典的键是这样的:
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
所以基本上我需要创建字典,然后用一个键/值对更新它,即使我在创建该字典之前知道该键/值对。还有更好的方法吗?
答案 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]
包含零,如果它对您的程序逻辑有所影响。