簡體   English   中英

打包字典,用逗號分隔值

[英]Pack dictionary with values separated by comma

我有一個這樣的文本文件:

key1 value1  A
key1 value2  B
key1 value3  A
key2 value1  A
key2 value2  B

我正在嘗試將其作為字典打開,並打印以逗號分隔的鍵和值的列表,因此最終看起來像這樣:

key1 value1,value2,value  A,B,A
key2 value1,value2,value A,B

我正在嘗試以下代碼:

f = open('file.txt', 'r')
answer = {}
for line in f:
    list = ",".join(map(str,f))
    print list

但這沒用

有什么想法我做錯了嗎? 謝謝你的幫助

使用collections.defaultdict

from collections import defaultdict

with open('file.txt') as f:
    answer = defaultdict(lambda: ([], []))
    for line in f:
        key, value, alpha = line.split()
        answer[key][0].append(value)
        answer[key][1].append(alpha)

for key, (values, alphas) in sorted(answer.items()):
    print key, ','.join(values), ','.join(alphas)

輸出:

key1 value1,value2,value3 A,B,A
key2 value1,value2 A,B

您正在初始化字典,但隨后您再也不會在循環中使用它了。 請嘗試以下方法:

from collections import defaultdict

answers = defaultdict(list)

with open('file.txt') as inf:
   for line in inf:
      bits = line.rstrip().split()
      answers[bits[0]].append(','.join(bits[1:]))

for key,values in answers.iteritems(): # in Python 3, use answers.items()
   for value in values:
       print('{} {}'.format(key, value))

另外,請勿將list用作變量的名稱。

暫無
暫無

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

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