【问题标题】:Searching throught ordered dictionaries通过有序字典搜索
【发布时间】:2019-09-12 16:00:32
【问题描述】:

我用这段代码制作了一个从 csv 文件中读取的程序;

reader = csv.DictReader(open('FakeNameSet.csv', 'r', encoding='utf-8-sig'))
customer_list = []
for line in reader:
    customer_list.append(line)

此代码从我的 csv 文件创建这些类型的有序字典;

OrderedDict([('Number', '19'),
              ('Gender', 'female'),
              ('NameSet', 'Dutch'),
              ('GivenName', 'Özgül'),
              ('Surname', 'Overgaauw'),
              ('StreetAddress', 'Adriana Noorlandersingel 200'),
              ('ZipCode', '3065 HE'),
              ('City', 'Rotterdam'),
              ('EmailAddress', 'OzgulOvergaauw@superrito.com'),
              ('Username', 'Shrothem1971'),
              ('TelephoneNumber', '06-15253488')]),
 OrderedDict([('Number', '20'),
              ('Gender', 'female'),
              ('NameSet', 'Dutch'),
              ('GivenName', 'Gülseren'),
              ('Surname', 'Willigenburg'),
              ('StreetAddress', 'Dingspelstraat 28'),
              ('ZipCode', '9461 JE'),
              ('City', 'Gieten'),
              ('EmailAddress', 'GulserenWilligenburg@teleworm.us'),
              ('Username', 'Ressoare'),
              ('TelephoneNumber', '06-92433659')])]

现在我需要按名称访问此列表中的人员,但我不知道如何访问此 OrderedDict 样式中的名称。我已经尝试了 2 个小时,但似乎没有任何效果。

所以基本上,我有一个包含许多这些有序词典的列表,我想在这些词典中搜索特定的人;所以基本上一个功能如下;

Search_for_person("Gülseren"),然后返回该人的所有信息。

【问题讨论】:

  • 什么你在那段时间尝试过?对“OrderedDict 访问”进行简单的 Google 搜索就可以满足您的需求。
  • 我按照这里给出的说明进行操作; stackoverflow.com/questions/10058140/… 但他们所拥有的结构与我在这里的结构不同,他们制作了一个 OrderedDict 并通过它进行搜索,但我有 20 个,我只是不知道我做错了什么

标签: python csv oop dictionary


【解决方案1】:

因此,记录是有序字典,但您将客户保留在列表中。如果您只按名称搜索,将customer_list 更改为字典应该可以解决问题:

customers = {}
for line in reader:
    customers['GivenName'] = line

# assuming GivenName is unique, search customers by given name:
customer = customers["Gülseren"]

如果您需要按其他字段搜索,我建议使用 pandas 数据框:

import pandas as pd

customers = pd.read_csv('FakeNameSet.csv', encoding='utf-8-sig')
# find customers by a given name:
# (doesn't assume uniqueness, you can get several rows)
customers[customers['GivenName] == "Gülseren"]

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多