根据其他词典中的键创建新词典

时间:2018-09-19 14:30:15

标签: python python-3.x dictionary

我有2个(简化的)字典,像这样:

dict1 = {'X(0,0)': 1, 'X(0,1)': 3, 'X(1,0)':4, 'X(1,1)':2}
dict2 = {'X(0)': 'area1', 'X(1)': 'area2'}

如果dict2'X(i)'dict1键{{的一部分, 1}}。 所以最终结果应该是这样的:

'X(i,j)'

我尝试按照建议的here进行操作,但这并不是我想要的,并且无法使其正常工作。

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作: 但是这种方法更适合您的问题。

print {key:dict2.get(key.split(',')[0]+')')for key in dict1}
# {'X(0,0)': 'area1', 'X(0,1)': 'area1', 'X(1,0)': 'area2', 'X(1,1)': 'area2'}

X(0,0)转换为X(0)就是这样

In [29]: 'X(0,0)'.split(',')
Out[29]: ['X(0', '0)']

In [30]: 'X(0,0)'.split(',')[0]+')'
Out[30]: 'X(0)'

答案 1 :(得分:0)

我建议您先创建一个临时字典(用于键查找),然后再做最后一个:

tmp_dict = {key[:3]: value for key, value in dict2.items()}
# {'X(0': 'area1', 'X(1': 'area2'}
dict3 = {key: tmp_dict[key[:3]] for key, value in dict1.items()}
# {'X(0,0)': 'area1', 'X(0,1)': 'area1', 'X(1,0)': 'area2', 'X(1,1)': 'area2'}

这仅适用于单位坐标。

答案 2 :(得分:0)

dict3 ={}
for i in dict1:
    dict3[i]=dict2[i[:3]+")"]

适合您的情况!