Способ узнать, когда пользователи отменили использование словарей - PullRequest
1 голос
/ 09 сентября 2011

Я создал словарь из {'username': 'date'} или {'date': 'username'} (я могу изменить порядок пары key: value на любой, какой я захочу). Чтобы установить значения, мне нужно сказать ...

{'Jacob Rasnip': 'Apr', 'Andrew Alexander': 'Apr', 'Jacob Rasnip': 'May'}

или наоборот ...

{'Apr': 'Jacob Rasnip'}

У меня около 1500 словарных значений, всем пользователям назначены разные месяцы или месяцы, присвоенные пользователям.

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

Может ли кто-нибудь дать совет относительно наилучшего способа достижения этого.

Ответы [ 2 ]

4 голосов
/ 09 сентября 2011

В словаре не может быть дубликатов ключей. Например, он может иметь только один ключ 'Jacob Rasnip'. Ваш пример показывает два. Аналогично, в словаре может быть только один ключ 'Apr'.

Если вместо этого у вас был диктонарий имен пользователей, сопоставляемых со списком из datetime.date s:

{'Jacob Rasnip': [datetime.date(2011,4,1),datetime.date(2011,5,1),]...}

Тогда вы можете сгенерировать первый и последний месяцы с

for user,dates in user_dict.iteritems():
    first_date = min(dates)
    last_date = max(dates)
    print(user,first_date,last_date)

Примечание min и max полагаются на элементы в dates, являющиеся datetime.date объектами. Это также будет работать с простыми целыми числами, представляющими месяцы (при условии, что все месяцы относятся к одному и тому же году). Но это не будет работать так, как нужно для названий строк за месяцы (например, 'Apr').

2 голосов
/ 09 сентября 2011

Вы сказали.

Могу ли я, чтобы каждое имя (как ключ) имело несколько значений?В настоящее время я объединяю два списка (один из имен, другой из дат) следующим образом: testdict = dict (zip (имя, дата))

Нет, но вы можете объединить эти значения втак выглядит ответ unutbu.

import collections
data = collections.defaultdict(list)

for n, d in zip(name, date):
    data[n].append(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...