【问题标题】:How to access values in ordereddict?如何访问ordereddict中的值?
【发布时间】:2020-06-23 22:32:11
【问题描述】:

我打开并从 argv 读取 csv 文件到字典

data = open(argv[1])
reader = csv.DictReader(data)
dict_list = []
for line in reader:
    dict_list.append(line)

现在当我想像这样访问 csv 文件的内容时:

for x in dict_list[0]:
    print(x)

我得到的只是:

"OrderedDict([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')])"

使用此功能:

for x in dict_list[0]:
    print(x)

我得到这个结果:

name
AGATC
AATG
TATC

你能帮我访问“Alice”、“2”、“8”和“3”吗?

【问题讨论】:

    标签: csv ordereddict


    【解决方案1】:

    您可以通过几种方式遍历字典。

    让我们用你的值初始化字典:

    from collections import OrderedDict
    dict_list = OrderedDict([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')])
    

    这得到了我们:

    OrderedDict([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')])
    

    然后您可以遍历每个键,然后查询附加的值:

    for k in dict_list:
        print(f"key={k}, value={dict_list[k]}")
    

    你会得到:

    key=name, value=Alice
    key=AGATC, value=2
    key=AATG, value=8
    key=TATC, value=3
    

    或者,你可以同时获取key和value:

    for (k, v) in dict_list.items():
        print(f"key={k}, value={v}")
    

    这将为您提供相同的输出:

    key=name, value=Alice
    key=AGATC, value=2
    key=AATG, value=8
    key=TATC, value=3
    

    【讨论】:

    • 当我这样做时,我得到这个错误:> and >.
    • 在哪一部分?你能发布触发错误的确切代码吗?
    • 原来 dict_list OrderedDict 不是字典(它是一个列表,这就是打印的 dict_list 在 [ ] 方括号中的原因),所以它没有 'items' 属性。我把它转换成字典,它起作用了。
    • 如果您只想遍历 (key, values) 的列表,而不是按键搜索,则元组列表可能会更好;这取决于您的用例。如果对您有帮助,别忘了标记答案。
    【解决方案2】:

    我将 OrderedDict dict_list 设为字典,现在我可以访问键的值:

    for x in dict_list:
        temp  = dict(x)
        for y in types_count:
            print(temp.get(y))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2011-12-23
      • 1970-01-01
      相关资源
      最近更新 更多