Создать новый словарь на основе ключей из других словарей - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть 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 key 'X(i)' является частью dict1 key 'X(i,j)'.Таким образом, конечный результат должен выглядеть следующим образом:

dict3 = {'X(0,0)': 'area1', 'X(0,1)': 'area1', 'X(1,0)':'area2', 'X(1,1)':'area2'}

Я пытался следовать предложенному здесь , но это не совсем то, чего я хочу, и не могу заставить его работать.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Я предлагаю вам сначала создать временный словарь (для поиска ключей), а затем сделать окончательный:

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'}

это будет работать только для однозначных координат.

0 голосов
/ 19 сентября 2018
dict3 ={}
for i in dict1:
    dict3[i]=dict2[i[:3]+")"]

Для вашего случая!

0 голосов
/ 19 сентября 2018

Вы можете сделать что-то вроде этого: Но подход более специфичен для вашей проблемы.

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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...