如何使用作为键和值给出的列创建字典

时间:2014-10-30 02:25:15

标签: python list dictionary key key-value

好的,我有两列

A S

A T

A Z

B F

B G

B P

B U

C D

C P

C R

D M

E H

F S

H U

第1列是点列表,第2列是点的邻居列表。我想把它变成一本字典 {A:' S'''' Z',B:' F'' G', ' P'等等}。等等。

我尝试做的是这个,因为文本文件是两列。

edges = open('romEdges.txt')

edgeslist = edges.read().split()

edgeskeys = edgeslist[::2]

edgesvalues = edgeslist[1::2]


dictionary = {}

for items in edgeskeys:

    dictionary[items]=[]

dictionary = OrderedDict(sorted(dictionary.items(), key=lambda t: t[0]))

for items in edgeskeys:

    if edgeskeys[items]==dictionary[items]:

        print()

print(dictionary)

我尝试制作2个列表,1个键和1个值,并尝试将它们与字典等进行比较,我只是无法正确使用它!

有一个简单的方法。

请帮忙。

3 个答案:

答案 0 :(得分:2)

为什么不只是简单的逐行处理?

f = open('romEdges.txt')
dic = {}
for l in f:
    k, v = l.split()
    if k in dic:
        dic[k].extend(v)
    else:
        dic[k] = [v]
f.close()
print dic

输入输出:

{'A': ['S', 'T', 'Z'], 'C': ['D', 'P', 'R'], 'B': ['F', 'G', 'P', 'U'], 'E': ['H'], 'D': ['M'], 'F': ['S'], 'H': ['U']}

答案 1 :(得分:1)

对于那些只想从colums创建一个简单字典但没有重复键值的人来说,这应该有效:

 edges = open('romEdges.txt')
 dict = {line[:1]:line[1:] for line in edges}
 print dict
 edges.close()

现在你的值中可能有一些空格或Backspaces,那么你可以用空字符串替换():

 edges = open('romEdges.txt')
 dict = {line[:1]:line[1:].split()[0] for line in edges}
 print dict
 edges.close()

如果您有多个列,并且您希望将以下列中的列表添加到该键值:

 edges = open('romEdges.txt')
 dict = {line[:1]:line[1:].split() for line in edges}
 print dict
 edges.close()

答案 2 :(得分:0)

f = open('romEdges.txt')

dic = {}

l

k, v = l.split('\t')
dic.setdefault(k,[])
if k in dic.keys():
    dic[k].extend([v.strip()])
else:
    dic[k] =[v]
f.close()

print dic