Заданные словари d1 и d2 создают новый словарь со следующим свойством: для каждой записи (a, b) в d1, если есть запись (b, c) в d2, тогда запись (a, c) должна быть добавлена в новый словарь. Как думать о решении?Я начинаю начинать с питона, новый словарь
ответ
def transitive_dict_join(d1, d2):
result = dict()
for a, b in d1.iteritems():
if b in d2:
result[a] = d2[b]
return result
Вы можете выразить это более сжато, конечно, но я думаю, что для новичка, орфографические вещи из яснее и более поучительные.
Я согласен с Алексом, на необходимостью написания вещей как новичка, а затем перейти к более сжатым/абстрактным/опасным конструкциям.
Для записи я размещаю здесь версию для понимания списка, поскольку Пол не работает.
>>> d1 = {'a':'alpha', 'b':'bravo', 'c':'charlie', 'd':'delta'}
>>> d2 = {'alpha':'male', 'delta':'faucet', 'echo':'in the valley'}
>>> d3 = dict([(x, d2[d1[x]]) for x in d1**.keys() **if d2.has_key(d1[x])]) #.keys() is optional, cf notes
>>> d3
{'a': 'male', 'd': 'faucet'}
В двух словах, линия с "d3 =
" говорит следующее:
d3 is a new dict object made from all the pairs made of x, the key of d1 and d2[d1[x]] (above are respectively the "a"s and the "c"s in the problem) where x is taken from all the keys of d1 (the "a"s in the problem) if d2 has indeed a key equal to d1[x] (above condition avoids the key errors when getting d2[d1[x]])
Да, я не тестировал. Твой трюк делает трюк. –
Есть ли причина, по которой вы используете .keys()? Отличается ли это от: 'd3 = dict ([(x, d2 [d1 [x]]) для x в d1, если d1 [x] в d2])'? –
@Andrea Нет особой причины, кроме легкой попытки сделать выражение более явным для новичков (cf Alex 'wise взять на себя это). Но вы правы. X x для x в d1' является идиоматическим способом перечисления ключей d1. – mjv
#!/usr/local/bin/python3.1
b = { 'aaa' : '[email protected]',
'bbb' : '[email protected]',
'ccc' : '[email protected]'
}
a = {'a':'aaa', 'b':'bbb', 'c':'ccc'}
c = {}
for x in a.keys():
if a[x] in b:
c[x] = b[a[x]]
print(c)
Выход: { 'а': '[email protected]', 'с' : '[email protected]', 'b': '[email protected]'}
- 1. Я только начинаю с PythonCard ...
- 2. создать словарь питона, основанный на другой словарь
- 3. Создать словарь с присоединиться питона
- 4. Я начинаю использовать tkinter
- 5. Спам-фильтрация: где я начинаю
- 6. Сортировка питона словарь
- 7. словарь в питона Словаре
- 8. Рекурсивный словарь модификация питона
- 9. создать новый файл CSV с помощью питона
- 10. питона, как использовать словарь
- 11. питона словарь понимание итератор
- 12. Сортировать словарь словарей питона
- 13. списки в словарь питона
- 14. питона словарь вопрос
- 15. Доступ словарь питона
- 16. Python: Append словарь новый элемент
- 17. Создать новый словарь с javascript
- 18. Прерывать текущий хвост и начинать новый
- 19. Android: ListView привычка начинать новый класс фиксированной
- 20. Прерывать текущее считывание TalkBack и начинать новый?
- 21. Я начинаю загрузку, неизвестный размер
- 22. ANR, когда я начинаю услугу
- 23. чтение файла в словарь питона
- 24. питона найти словарь в словаре
- 25. питона - формат многострочной строка% словарь
- 26. Преобразовать словарь Javascript словаря питона
- 27. Создать словарь из списка питона
- 28. слово словарь поиск с использованием питона рекурсию
- 29. питона строка вывода с сервера в словарь
- 30. как заказать словарь питона (сортировки)
Если это проблема с домашней работой, пожалуйста, пометьте ее как таковой. –
Пожалуйста, не задавайте домашние вопросы. Только отправляйте свои попытки и задавайте конкретные проблемы, которые вы не понимаете. – hasen