在Python中比较字典的键并提取相应的值

在Python中比较字典的键并提取相应的值,python,dataframe,dictionary,Python,Dataframe,Dictionary,我有两本字典:- dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]} dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]} 我想提取两个字典中存在的所有键的值,这样在同一时刻,我只能从字典中获取对应键的一个值 dict_1 = {'a': ["['b','c',

我有两本字典:-

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
我想提取两个字典中存在的所有键的值,这样在同一时刻,我只能从字典中获取对应键的一个值

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
预期产出

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   

请帮助我获取输出。

我将假设此输入:

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
dict_1 = {'a': ['b','c','d','e'],'b': ['a','c','d','e'],'p': ['q','r','s']}

dict_2 = {'a': ['x','y','z','n'],'b': ['u','v','w','x','y','z','n']}
如果没有,您可以使用
dict_i={k:literal_eval(v)for k,v in dict_i.items()}

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
您可以使用理解来选择期望的数据,并使用它来构建数据框架:

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
data = [(k, v1, v2) for k in dict_1 if k in dict_2
        for v1, v2 in zip(dict_1[k], dict_2[k])]

df = pd.DataFrame(data)
它给出:

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
   0  1  2
0  a  b  x
1  a  c  y
2  a  d  z
3  a  e  n
4  b  a  u
5  b  c  v
6  b  d  w
7  b  e  x

我不知道什么是数据帧。以下是代码和示例输出:

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
dict_one = {1: [1, 2, 3, 4]}
dict_two = {1: [7, 8, 9, 10]}
all_keys = set(dict_one).union(set(dict_two))
rows = []
for key in all_keys:
    dict_one_values = []
    if key in dict_one:
        dict_one_values = dict_one[key]
    dict_two_values = []
    if key in dict_two:
        dict_two_values = dict_two[key]
    for i in range(min(len(dict_one_values), len(dict_two_values))):
        rows.append([key, dict_one_values[i], dict_two_values[i]])
for row in rows:
    print(*row)
输出:

dict_1 = {'a': ["['b','c','d','e']"],'b': ["['a','c','d','e']"],'p': ["['q','r','s']"]}   
dict_2 = {'a': ["['x','y','z','n']"],'b': ["['u','v','w','x','y','z','n']"]}   
1 1 7
1 2 8
1 3 9
1 4 10

收集数据的方法是什么?请给出几个简单的例子。为什么
'a':[“['b','c','d','e']
而不是“
a':['b','c','d','e']