Python 如何在循环中创建并向字典添加新项?
我正在编写一个程序,从文件中读取与这些名称相关的名称和统计信息。文件的每一行都是另一个人及其统计信息。对于每个人,我想让他们的姓氏成为一个键,以及字典中与该键相关的所有内容。程序首先将文件中的数据存储在一个数组中,然后我尝试将这些数组元素放入字典中,但我不确定如何做到这一点。另外,我不确定是否每次for循环迭代时,它都会覆盖字典以前的内容。下面是我尝试使用的代码:Python 如何在循环中创建并向字典添加新项?,python,arrays,dictionary,Python,Arrays,Dictionary,我正在编写一个程序,从文件中读取与这些名称相关的名称和统计信息。文件的每一行都是另一个人及其统计信息。对于每个人,我想让他们的姓氏成为一个键,以及字典中与该键相关的所有内容。程序首先将文件中的数据存储在一个数组中,然后我尝试将这些数组元素放入字典中,但我不确定如何做到这一点。另外,我不确定是否每次for循环迭代时,它都会覆盖字典以前的内容。下面是我尝试使用的代码: f = open("people.in", "r") tmp = None people l = f.readline() wh
f = open("people.in", "r")
tmp = None
people
l = f.readline()
while l:
tmp = l.split(',')
print tmp
people = {tmp[2] : tmp[0])
l = f.readline()
people['Smith']
我目前遇到的错误是语法不正确,但是除了这样,我不知道如何将数组元素转移到字典中 使用密钥分配:
people = {}
for line in f:
tmp = l.rstrip('\n').split(',')
people[tmp[2]] = tmp[0]
这将直接循环文件对象,无需在此处调用.readline()
,并删除换行符
您似乎有CSV数据;您也可以在此处使用csv
模块:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]] = row[0]
甚至是听写理解:
import csv
with open("people.in", "rb") as f:
reader = csv.reader(f)
people = {r[2]: r[0] for r in reader}
这里的csv
模块负责分割和删除换行符
语法错误源于尝试用)
而不是}
关闭打开的{
:
people = {tmp[2] : tmp[0]) # should be }
如果需要收集每个行[2]
值的多个条目,请在列表中收集这些条目;a使之更容易:
import csv
from collections import defaultdict
people = defaultdict(list)
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]].append(row[0])
使用密钥分配:
people = {}
for line in f:
tmp = l.rstrip('\n').split(',')
people[tmp[2]] = tmp[0]
这将直接循环文件对象,无需在此处调用.readline()
,并删除换行符
您似乎有CSV数据;您也可以在此处使用csv
模块:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]] = row[0]
甚至是听写理解:
import csv
with open("people.in", "rb") as f:
reader = csv.reader(f)
people = {r[2]: r[0] for r in reader}
这里的csv
模块负责分割和删除换行符
语法错误源于尝试用)
而不是}
关闭打开的{
:
people = {tmp[2] : tmp[0]) # should be }
如果需要收集每个行[2]
值的多个条目,请在列表中收集这些条目;a使之更容易:
import csv
from collections import defaultdict
people = defaultdict(list)
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]].append(row[0])
使用密钥分配:
people = {}
for line in f:
tmp = l.rstrip('\n').split(',')
people[tmp[2]] = tmp[0]
这将直接循环文件对象,无需在此处调用.readline()
,并删除换行符
您似乎有CSV数据;您也可以在此处使用csv
模块:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]] = row[0]
甚至是听写理解:
import csv
with open("people.in", "rb") as f:
reader = csv.reader(f)
people = {r[2]: r[0] for r in reader}
这里的csv
模块负责分割和删除换行符
语法错误源于尝试用)
而不是}
关闭打开的{
:
people = {tmp[2] : tmp[0]) # should be }
如果需要收集每个行[2]
值的多个条目,请在列表中收集这些条目;a使之更容易:
import csv
from collections import defaultdict
people = defaultdict(list)
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]].append(row[0])
使用密钥分配:
people = {}
for line in f:
tmp = l.rstrip('\n').split(',')
people[tmp[2]] = tmp[0]
这将直接循环文件对象,无需在此处调用.readline()
,并删除换行符
您似乎有CSV数据;您也可以在此处使用csv
模块:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]] = row[0]
甚至是听写理解:
import csv
with open("people.in", "rb") as f:
reader = csv.reader(f)
people = {r[2]: r[0] for r in reader}
这里的csv
模块负责分割和删除换行符
语法错误源于尝试用)
而不是}
关闭打开的{
:
people = {tmp[2] : tmp[0]) # should be }
如果需要收集每个行[2]
值的多个条目,请在列表中收集这些条目;a使之更容易:
import csv
from collections import defaultdict
people = defaultdict(list)
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
people[row[2]].append(row[0])
根据上面Generalkidd的评论,多人在Martijn Pieter的解决方案中添加了相同的最后一次,作为更好格式的答案发布:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
if not row[2] in people:
people[row[2]] = list()
people[row[2]].append(row[0])
根据上面Generalkidd的评论,多人在Martijn Pieter的解决方案中添加了相同的最后一次,作为更好格式的答案发布:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
if not row[2] in people:
people[row[2]] = list()
people[row[2]].append(row[0])
根据上面Generalkidd的评论,多人在Martijn Pieter的解决方案中添加了相同的最后一次,作为更好格式的答案发布:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
if not row[2] in people:
people[row[2]] = list()
people[row[2]].append(row[0])
根据上面Generalkidd的评论,多人在Martijn Pieter的解决方案中添加了相同的最后一次,作为更好格式的答案发布:
import csv
people = {}
with open("people.in", "rb") as f:
reader = csv.reader(f)
for row in reader:
if not row[2] in people:
people[row[2]] = list()
people[row[2]].append(row[0])
由此产生的唯一语法错误是,如果将制表符与空格混合(或者如果使用python3,
print
语句),那么缩进会导致代码出现错误,但从语义上讲,代码毫无意义。。。您可能应该阅读官方的python教程来获得对该语言的基本理解。@l4mpi:语法不正确;字典没有正确关闭。@MartijnPieters哦,对了。在代码的所有其他问题中,我忽略了这一点……由此产生的唯一语法错误是,如果您将制表符与空格混合(或者如果您使用python3,即print
语句),则会出现缩进,但从语义上讲,代码毫无意义。。。您可能应该阅读官方的python教程来获得对该语言的基本理解。@l4mpi:语法不正确;字典没有正确关闭。@MartijnPieters哦,对了。在代码的所有其他问题中,我忽略了这一点……由此产生的唯一语法错误是,如果您将制表符与空格混合(或者如果您使用python3,即print
语句),则会出现缩进,但从语义上讲,代码毫无意义。。。您可能应该阅读官方的python教程来获得对该语言的基本理解。@l4mpi:语法不正确;字典没有正确关闭。@MartijnPieters哦,对了。在代码的所有其他问题中,我忽略了这一点……由此产生的唯一语法错误是,如果您将制表符与空格混合(或者如果您使用python3,即print
语句),则会出现缩进,但从语义上讲,代码毫无意义。。。您可能应该阅读官方的python教程来获得对该语言的基本理解。@l4mpi:语法不正确;字典没有正确关闭。@MartijnPieters哦,对了。在代码的所有其他问题中,我都忽略了这一点……代码现在可以工作了,但看起来