【问题标题】:Inserting the same values of string (as a key ) in the dictionary在字典中插入相同的字符串值(作为键)
【发布时间】:2020-03-27 11:02:05
【问题描述】:

我正在用 Django 编写 python 代码。我遇到了一个问题,其中我有三个可选字段:

Contact Name             Contact Number                     Contact Email
Ram                       9888812345                       *Blank*(Meaning not present)
Ram                       9888812345                        ram@gmail.com
Shyam                     8776532211                        shyam@hotmail.com

为此,我编写了如下代码:

df = csv.DictReader(open(uploaded_file_path), delimiter='\t')
contact_validation = {}
for row in df:
    if not row['Contact Name']:
       row['Contact Name'] = 'Name'
    if not row['Contact Number']:
       row['Contact Number'] = 'Number'
    if not row['Contact Email']:
       row['Contact Email'] = 'Email'     
    if (row['Contact Name']+ "-" + row['Contact Number']+ "-" + row['Contact Email']) not in contact_validation.keys():                        
       contact_validation[(row['Contact Name']+ "-" + row['Contact Number']+ "-" + row['Contact Email']).strip()] = []
       contact_validation[(row['Contact Name']+ "-" + row['Contact Number']+ "-" + row['Contact Email']).strip()].append(row['Name'])
    else:
       contact_validation[(row['Contact Name']+ "-" + row['Contact Number']+ "-" + row['Contact Email']).strip()].append(row['Name'])

为此,目前我的输出如下:

{'Ram-9888812345-Email': ['CRM_TestVenue_26_March_23'],
 'Ram-9888812345-ram@gmail.com': ['CRM_TestVenue_26_March_2']
 'Shyam-8776532211-shyam@hotmail.com':[Test2]}

但我要求输出如下:

{'Ram-9888812345-ram@gmail.com': ['CRM_TestVenue_26_March_23','CRM_TestVenue_26_March_2'],
'Shyam-8776532211-shyam@hotmail.com':[Test2]}

任何人都可以提出一些代码或建议吗?有什么需要改变或改进的?

【问题讨论】:

  • 嗨,你能提供一个示例输入吗?
  • hI @Errol,我已经给出了示例输入,其中包含开头提到的所有三个字段。有什么不清楚的可以问我。

标签: python django dictionary django-rest-framework


【解决方案1】:

听起来您想要组合相互补充的行。也就是说,他们有相同的联系人姓名,但不是重复的号码或电子邮件。您没有包含执行此操作的代码。

既然看起来你无论如何都在使用熊猫,你可以做类似的事情

contacts_missing_info = df.loc[((df['Contact Number'].isna()) | (df['Contact Email'].isna()))]

并使用类似的代码来获取不缺少信息的联系人,然后将缺少信息的联系人组合在一起,然后附加两个数据框并以这种方式处理。


编辑:即使您没有使用 pandas,但想法是一样的。遍历您的对象并确保按照您想要的方式组合所有重复项,然后执行您的代码。

【讨论】:

  • 嗨@manny。我没有使用 pandas 。我正在使用 django 框架
  • 我也得到一个错误 - *** AttributeError: AttributeError("DictReader instance has no attribute 'loc'",) here df = csv.DictReader(open(uploaded_file_path), delimiter='\t ')
  • 你能在 Django python 中提出同样的建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 2021-01-31
  • 2018-09-11
  • 2022-10-14
相关资源
最近更新 更多