有没有一种方法可以将文件列表设置为字典中的值

时间:2019-11-12 10:43:48

标签: python dictionary

我正在努力获取文件中的列表作为字典中的值。

我有这个.txt文件:

A,['♠8', '♥9', '♥D', '♥K']
B,['♣J', '♠10', '♥J', '♦K']
C,['♣K', '♦A', '♣A']
D,['♦9', '♠J', '♥A', '♦7']
E,['♣D', '♠A', '♥8']
F,['♦J', '♠K', '♦D', '♣9']
G,['♠7', '♣8', '♠D', '♦8']
H,['♣10', '♠9', '♥10', '♦10']

我希望第一个字母为键,下面的列表为值。

for line in file:
        key=line[:1]
        kort[key]=line[2:-1]

结果如下:

{'A': "['♠8', '♥9', '♥D', '♥K']", 'B': "['♣J', '♠10', '♥J', '♦K']", 'C': "['♣K', '♦A', '♣A']", 'D': "['♦9', '♠J', '♥A', '♦7']", 'E': "['♣D', '♠A', '♥8']", 'F': "['♦J', '♠K', '♦D', '♣9']", 'G': "['♠7', '♣8', '♠D', '♦8']", 'H': "['♣10', '♠9', '♥10', '♦10']"}

2 个答案:

答案 0 :(得分:1)

您可以使用astdict comprehension来实现。

# Input
file = """A,['♠8', '♥9', '♥D', '♥K']
B,['♣J', '♠10', '♥J', '♦K']
C,['♣K', '♦A', '♣A']
D,['♦9', '♠J', '♥A', '♦7']
E,['♣D', '♠A', '♥8']
F,['♦J', '♠K', '♦D', '♣9']
G,['♠7', '♣8', '♠D', '♦8']
H,['♣10', '♠9', '♥10', '♦10']"""

# Main code
from ast import literal_eval as le
res = {line.split(",",1)[0]: le(line.split(",",1)[1]) for line in file.split("\n")}

# Output
print (res)

# {'A': ['♠8', '♥9', '♥D', '♥K'], 'B': ['♣J', '♠10', '♥J', '♦K'], 'C': ['♣K', '♦A', '♣A'], 'D': ['♦9', '♠J', '♥A', '♦7'], 'E': ['♣D', '♠A', '♥8'], 'F': ['♦J', '♠K', '♦D', '♣9'], 'G': ['♠7', '♣8', '♠D', '♦8'], 'H': ['♣10', '♠9', '♥10', '♦10']}

我希望这对您有所帮助!

答案 1 :(得分:0)

您必须将字符串传输到列表中。

import ast
data = "['♠8', '♥9', '♥D', '♥K']"
result = ast.literal_eval(data)
print(result)

这会给您['♠8', '♥9', '♥D', '♥K']