簡體   English   中英

Python 迭代/查找字典意外行為

[英]Python iterating/look up dictionary unexpected behavior

當我嘗試在 csv 字典中查找數據時遇到問題。 日期和時間列表在一個 csv 中,它應該在第二個 csv 中查找特定日期和時間的數據。 我尋找完全匹配和 22 條下一條記錄。 問題是它只獲取第一個日期和時間,並且沒有找到 rest,即使我可以看到它在那里。 我覺得這有一個非常簡單的解決方案,但我什么都想不出來。 這一定是我的迭代代碼中的問題。

代碼:

import csv
csv_eph = open("G:\\db.csv")
csv_reader_eph = csv.reader(csv_eph, delimiter=",")
csv_dict_eph = csv.DictReader (csv_eph)
csv_matches = open("G:\\query.csv")
csv_reader_matches = csv.reader(csv_matches, delimiter=",")
csv_dict_matches = csv.DictReader (csv_matches)

result = []
var = 0
for row in csv_dict_matches:
    datum = row["Date"]
    cas = row["Time"]
    result.append('\n')
    result.append(row)
    for eph in csv_dict_eph:
        if str(eph["datum"]) == str(datum) and str(eph["cas"]) == str(cas):
            var = 23 
        if var > 0:
            result.append(eph)
            var = var - 1

with open("G:\\compiled.txt", "w") as output:
    for item in result:
        output.write(str(item))
        output.write('\n')

解決方案,我實施了 jasonharper 解決方案,它完美無缺。 非常感謝。 字典結尾確實有問題:現在修復它看起來像這樣並且按預期工作:

import csv
csv_eph = open("G:\\db.csv")
csv_reader_eph = csv.reader(csv_eph, delimiter=",")
csv_dict_eph = csv.DictReader (csv_eph)
csv_matches = open("G:\\query.csv")
csv_reader_matches = csv.reader(csv_matches, delimiter=",")
csv_dict_matches = csv.DictReader (csv_matches)

#jasonharper
eph_list = []
for eph in csv_dict_eph:
    eph_list.append(eph)


print (eph_list)
result = []
var = 0
for row in csv_dict_matches:
    print (row)
    datum = row["Date"]
    cas = row["Time"]
    result.append('\n')
    result.append(row)
    for eph in eph_list:
        if str(eph["datum"]) == str(datum) and str(eph["cas"]) == str(cas):
            var = 23 
        if var > 0:
            result.append(eph)
            var = var - 1

with open("G:\\compiled.txt", "w") as output:
    for item in result:
        output.write(str(item))
        output.write('\n')

我相信改變:

csv_dict_eph = csv.DictReader (csv_eph)

至:

csv_dict_eph = list(csv.DictReader(csv_eph))

將解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM