我有一个程序循环遍历目录中可以找到的所有.xml。它搜索设备ID然后将它们全部添加到字典中(我认为)当我将它打印出来时它看起来像
{'1.xml': [], '2.xml': []}
接下来,我将从文件中获取的设备ID插入其中,以便输出如下:
{'1.xml': ['3', '12'], '2.xml': ['23', '3'']}
我想得到哪些设备ID是相同的,所以打印出来:
3
也许它甚至可以显示从哪些文件中获取信息,但这并不重要
答案 0 :(得分:0)
你可以编写循环或使用reduce,如果你在python 3上,你必须从functools
导入。你可以使用lambda,例如: lambda s1,s2: s1 & s2
但我更喜欢从operator
模块导入适当的运算符。
In [1]: some_dict = {'1.xml': ['3', '12'], '2.xml': ['23', '3']}
In [2]: from functools import reduce
In [3]: from operator import and_
In [4]: reduce(and_,map(set, some_dict.values()))
Out[4]: {'3'}
等效的for-loop可以这样工作:
In [8]: it = iter(some_dict.values())
In [9]: intersection = set(next(it))
In [10]: for vals in it:
...: intersection &= set(vals)
...:
In [11]: intersection
Out[11]: {'3'}
答案 1 :(得分:0)
我正在考虑eval功能。如何将字典放入数组并动态生成代码。
例如:
list = [dict1]
list.append(dict2) # append all dicts to the list
for i in range(len(list)):
if i == len(list) - 1:
string_code += "set(dict%d)" % (i+1)
else:
string_code += "set(dict%d) & " % (i+1)
difference = eval(string_code)
只是第一个想法......