#python #python-3.x
#python #python-3.x
Вопрос:
Если бы у вас был словарь с несколькими ключами и значениями, как бы вы определили, какое значение встречается чаще всего в этом словаре. Я очень новичок в программировании, поэтому я не хочу ничего импортировать. Я думаю, может быть, создать пустой список, прочитать словарь с некоторыми циклами for , затем начать подсчет и добавить элемент, который встречается чаще всего, в этот список. Возможно ли это? Чем проще я могу его сохранить, тем лучше
Пример данных:
dict = {'Bob': ['Paul', 'Mark', 'Carol', 'Leanne', 'Will'], 'Carol': ['Mark', 'Leanne'], 'Farley': ['Paul'], 'Leanne': ['Sarai'], 'Larry': ['Carol', 'Mark', 'Leanne', 'Will'], 'Mark': ['Philip', 'Zach'], 'Paul': ['Zach'], 'Will': ['Leanne', 'Mark'], 'Zach': ['Philip']}
Комментарии:
1. ваша идея звучит возможно. Один совет — вы можете сделать
list(my_dict.values())
, чтобы автоматически получить список всех значений, поэтому вам не нужно читать его самостоятельно. Не стесняйтесь публиковать то, что вы пробовали / что не работает, и тогда люди смогут вам помочь.
Ответ №1:
Если вы не хотите использовать пакет collections, создайте функцию для заполнения словаря
c = {}
In [23]: for k,v in dict1.items():
...: for elem in v:
...: if elem not in c:
...: c[elem]=1
...: else:
...: c[elem] =1
...:
In [24]:
In [24]: c
Out[24]:
{'Paul': 2,
'Mark': 4,
'Carol': 2,
'Leanne': 4,
'Will': 2,
'Sarai': 1,
'Philip': 2,
'Zach': 2}
В случае нескольких ключей, имеющих максимальное значение
maxVal =0
In [44]: for v in c.values():
...: if v > maxVal:
...: maxVal = v
...:
In [45]: maxVal
Out[45]: 4
In [31]: keys= []
In [34]: for k,v in c.items():
...: if v == maxVal:
...: keys.append(k)
...:
...:
In [36]: print(*keys,sep=',')
Mark,Leanne
Комментарии:
1. обновлен ответ, чтобы найти максимум с помощью модуля коллекций
2. что вы не поняли. это в основном двухэтапный процесс. 1- создайте словарь, содержащий значения в качестве ключа и общее количество вхождений в качестве его значения. после того, как у вас есть словарь, используйте функцию max, чтобы получить ключ, имеющий наибольшее значение
3. пожалуйста, поделитесь образцом входных данных. Я предполагаю, что ваш словарь содержит список в виде значений
4. поскольку значения словаря являются списком, вам необходимо выполнить итерацию по элементу списка, чтобы создать словарь. Обновил мой ответ.
5. Я добавил ответ, используя цикл for, но вы можете сделать это с помощью модуля operator в одной строке.