【问题标题】:Querying from CSV files using python使用 python 从 CSV 文件中查询
【发布时间】:2020-03-06 01:09:54
【问题描述】:

我有三个 CSV 文件,一个包含所有片段的列表,一个包含 M 类型片段列表,另一个包含 B 类型片段列表。这意味着第一个列表包含另外两个,但没有指定它们的类型。 我想在第一个列表中添加一行,使用 python 指定片段的类型,这意味着对于第一个列表中的每个片段,检查它是否在列表 M 中并在其类型列中添加一个 M,否则添加一个 B。 我的想法是创建一个字典列表(稍后我可以使用预先编写的 Python 库将其转换为 CSV),它看起来像这样:

l = [{'piece','type'}] # list of dictionaries

for c in allpieces: # this is the list of all pieces:
    l[{'piece'}] = c['piece'] # adding the piece number to the list of dictionaries from the list of all pieces
    for m in mlist: # list of pieces of type m
      if c['piece'] == m['piece']: # check of piece is found in listm
        l[{'type'}] = 'm' # Add an m in its column
        else: l[{'type'}] = 'b' # otherwise add b

这段代码显然没有做任何事情,我需要帮助调试它。

【问题讨论】:

  • 你能不能贴几行'allpieces',以便我更好地查看它以进行调试?

标签: python sql database csv


【解决方案1】:

字典将键映射到像{"key": "value} 这样的值,而列表中的元素通过提供索引来访问,因此对于列表中的第一个元素,您可以通过list[0] 来获取它。现在,如果您想将带有值的新键添加到字典中,您可以通过像 d["key"] = value 那样添加它们来实现。如果您想添加到您的列表中,请执行list.append(value)。所以在你的情况下,你想要做的是创建一个包含字典的列表,我假设?所以看起来可能是这样的:

allpieces = ["Queen", "Tower", "Rook"]
mlist = ["Pawn", "Queen", "Rook"]
l = []

for c in allpieces:
    if c in mlist:
        l.append({"piece": c, "type": "m"})
    else:
        l.append({"piece": c, "type": "b"})

print(l)

这会创建一个列表,其中包含我们的字典:

[{'piece': 'Queen', 'type': 'm'}, {'piece': 'Tower', 'type': 'b'}, {'piece': 'Rook', 'type': 'm'}]

现在,如果您要访问此列表中的元素,您可以通过 l[0]["piece"] 获取 "Queen"

【讨论】:

  • 您发布的输出确实正是我想要的,问题是我的 allpieces 和 mlist 是 CSV 文件而不是列表,我需要从 allpieces 中提取数据检查它是否在 mlist 中,然后将它添加到我的字典列表中 'type' : 'm',两个 CSV 文件之间的比较是问题
  • @aniani2020 您是否已经从 csv 文件中提取数据?如果是这样,你的 allpieces 和 mlist 的列表或字典看起来如何?
  • 我有一个将 CSV 文件转换为关系(表格)的书面库,然后我的 allpieces 是一个表格,其中一行包含件数,而 mlist 是一个包含 m 类型件数的表格(已经在所有作品中)
  • 所以你的表格对象也是这样的? [{'piece': 'Queen', 'type': 'm'}, {'piece': 'Tower', 'type': 'b'}] 至少你尝试访问它们的方式让我这么想。如果是这样,您可以使用myList = [d['piece'] for d in allpieces] 将片段值放入我的列表中。
猜你喜欢
  • 2018-09-11
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多