如何解决如何在Python中将可变数量的词典合并为一个词典?
我正在尝试创建结合其他字典的字典。但是这些词典的数量是可变的。对于固定数量的字典,我想出了代码:
x = {"Age": 20}
y = {"Age": 30}
z = {"Age": 40}
output = dict(rule1 = x,rule2 = y,rule3 = z)
在上面的示例中,使用固定数量的字典(即3)创建了新字典(输出)。 现在我有n个字典,如何将它们结合起来?
dict_1 = {"Age": 123}
dict_2 = {"Age": 45}
'
'
'
'
'
dict_n = {"Age": 56}
final_output = dict(dict_1,dict_2,......dict_n)
解决方法
我没有直接了解的方法。我建议使用locals()
来检索本地可用变量及其数据的字典。您可以对此进行迭代,然后选择要使用的变量(例如,其中只有1个字母的变量)
您可以尝试制作一个词典,然后在获取数据时向其中添加每个词典,而不是制作n个词典,然后尝试将它们组合成一个词典。
针对您的情况:
class DictOfDict():
def __init__(self):
self.dict = {}
def add_entry(self,rule_name,input_dict):
self.dict[rule_name] = input_dict
def get_entry(self,rule_name):
try:
return self.dict[rule_name]
except KeyError:
print("invalid rule name")
return None
然后您可以将其用作:
rule_dict = DictOfDict()
rule_dict.add_entry('rule_x',{"Age": 20})
rule_dict.add_entry('rule_y',{"Age": 30})
rule_dict.add_entry('rule_z',{"Age": 40})
您可以按以下方式访问条目
rule = rule_dict.get_entry('rule_z') # == {"Age:40"}
,
我建议您使用字典列表,而不要使用分散的变量,因为它们非常不适用于此类操作。
这是通过给定的字典数组(列表)轻松完成所需的方法。
m_ = df.where(df.eq(df)&(df.columns.get_level_values(1)==0)).ffill(1)
m1 = m_.eq(1)
m2 = m_.eq(2)
,
您可以运行循环直到程序中的字典数量达到一定数量为止,然后使用update()方法。 EG-
dictionary = {}
# Let's imagine the variable d as a list of dictionaries
d = [{"Example": "A"},{"Example": "B"},{"Example": "C"}]
for i,b in enumerate(d):
dictionary[f"dict_{i}"] = b
print(dictionary) # {'dict_0': {'Example': 'A'},'dict_1': {'Example': 'B'},'dict_2': {'Example': 'C'}}
,
当您收到条目作为年龄值时,您可以边循环边将年龄带到仅代表年龄的字典,然后将其放入每个年龄段的其他字典索引中。
age = int(input())
#age dict
xyz = dict()
#future index
i = 0
output = dict()
while age != 0:
xyz['Age'] = age
#output index return a dict with key 'Age' and Age value
output[i] = {'Age':xyz['Age']}
i += 1
age = int(input())
print(output)
使用条目20 30 40 0输出:
{0: {'Age': 20},1: {'Age': 30},2: {'Age': 40}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。