Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从文件制作词典?_Python_List_Dictionary - Fatal编程技术网

Python 如何从文件制作词典?

Python 如何从文件制作词典?,python,list,dictionary,Python,List,Dictionary,我有以下文件(以制表符分隔): 我试图将索引[1]作为键,将索引[3]作为值放入字典中。它似乎还不起作用 my_dict = {} path = (r'c:\data\GG\Desktop\Extra\UK_test_cities.txt') with open(path, 'r') as f: for line in f: (key, val) = line.split() my_dict[int(key)] = val 这是我的输出: Fil

我有以下文件(以制表符分隔):

我试图将
索引[1]
作为键,将
索引[3]
作为值放入字典中。它似乎还不起作用

my_dict = {}

path = (r'c:\data\GG\Desktop\Extra\UK_test_cities.txt')

with open(path, 'r') as f:
    for line in f:
        (key, val) = line.split()
        my_dict[int(key)] = val
这是我的输出:

  File "c:/data/GG/Desktop/Extra/test_1.py", line 17, in <module>
    (key, val) = line.split()
ValueError: too many values to unpack (expected 2)
my_dict = {'Newcastle': ['AA,BB,CC'],
           'Manchester': ['AA,DD,FF'],
           'Liverpool': ['FF,GG,HH']}

每行有4列


从集合导入defaultdict
路径=(r'c:\data\GG\Desktop\Extra\UK\u test\u cities.txt')
my_dict=defaultdict()
打开(路径“r”)作为f:
content=f.readlines()
对于内容[2:]中的行:#前两行不包含数据
_,key,u,val=line.split()
我的字典[钥匙]=瓦尔

每行有4列


从集合导入defaultdict
路径=(r'c:\data\GG\Desktop\Extra\UK\u test\u cities.txt')
my_dict=defaultdict()
打开(路径“r”)作为f:
content=f.readlines()
对于内容[2:]中的行:#前两行不包含数据
_,key,u,val=line.split()
我的字典[钥匙]=瓦尔
或者,您可以使用csv模块或熊猫

import pandas as pd
path = r'c:\data\GG\Desktop\Extra\UK_test_cities.txt'
df = pd.read_csv(path, sep='\t', skiprows=2, index_col='Name',
                 usecols=[1, 3], names=['Name', 'District'])
df['District'] = df['District'].str.split(',')
my_dict = df.T.to_dict('index')['District']
print(my_dict)
print(my_dict)
这两个片段都将生成

{'Newcastle': ['AA', 'BB', 'CC'], 'Manchester': ['AA', 'DD', 'FF'], 'Liverpool': ['FF', 'GG', 'HH']}
或者,您可以使用csv模块或熊猫

import pandas as pd
path = r'c:\data\GG\Desktop\Extra\UK_test_cities.txt'
df = pd.read_csv(path, sep='\t', skiprows=2, index_col='Name',
                 usecols=[1, 3], names=['Name', 'District'])
df['District'] = df['District'].str.split(',')
my_dict = df.T.to_dict('index')['District']
print(my_dict)
print(my_dict)
这两个片段都将生成

{'Newcastle': ['AA', 'BB', 'CC'], 'Manchester': ['AA', 'DD', 'FF'], 'Liverpool': ['FF', 'GG', 'HH']}


是制表符分隔还是单空格分隔?@buran tab delimited“line.split()”生成您的“index”列表,您必须从中提取所需的项目,如您在描述中所示。请注意,所需输出中的值是单元素列表,不是每个区域都是独立元素的列表是制表符分隔的还是单空格分隔的?@buran tab delimited“line.split()”生成您的“index”列表,您必须从中提取所需的项目,如您在描述中所示。请注意,所需输出中的值是单元素列表,每个地区都是独立的元素,不能列出Parjbar您能解释一下在代码中使用索引[1]和[3]的位置吗?```,key,,val=line.split()“``在这一行中,您将位置1提取为键,将位置3提取为值,并忽略其余的位置。那么,如果在第三个位置之后有更多的位置,该怎么办?假设我有5个位置,您应该如下更改代码:fields=line.split()key,val=fields[1],fields[3]fields是什么?您能在代码中显示它吗?Parjbar您能解释一下您在代码中使用索引[1]和[3]的位置吗?```,key,,val=line.split()“``在这一行中,您将位置1提取为键,将位置3提取为值,并忽略其余的位置。那么,如果在第三个位置之后有更多的位置,该怎么办?假设我有5个位置,您应该如下更改代码:fields=line.split()key,val=fields[1],fields[3]fields是什么?请在代码中显示它好吗?
idx,name,abbr,district=line。拆分('\t')值错误:没有足够的值来解包(预期为4,得到1)
?在任何情况下,都有一行没有制表符。或者您的文件中确实有一行
*数据*
?我的制表符分隔文件看起来与我的问题中的完全相同。因此,对于
*数据*
和您的代码片段,我一直收到以下错误:
idx,name,abbr,district=line.split('\t')ValueError:没有足够的值进行解压缩(预期为4,得到1)
我编辑了我的答案以跳过前两行。感谢您抽出时间
idx,name,abbr,district=line。拆分('\t')值错误:没有足够的值来解包(预期为4,得到1)
所以,您没有使用制表符分隔的文件进行测试,或者有空行?在任何情况下,都有一行没有制表符。或者您的文件中确实有一行
*数据*
?我的制表符分隔文件看起来与我的问题中的完全相同。因此,对于
*数据*
和您的代码片段,我一直收到以下错误:
idx,name,abbr,district=line.split('\t')ValueError:没有足够的值进行解压缩(预期为4,得到1)
我编辑了答案,跳过了前两行。谢谢您抽出时间