【发布时间】:2020-03-27 16:24:45
【问题描述】:
我从文本文件制作了一本字典:
{('Aaronsburg', 'PA'): ('40.9184', '-77.3786'), ('Abbeville', 'AL'):
('31.5951', '-85.2108'), ('Abbeville', 'GA'): ('31.9890', '-83.3217'),
('Abbeville', 'LA'): ('29.9124', '-92.2110'), ('Abbeville', 'MS'):
('34.4771', '-89.4450'), ('Abbeville', 'SC'): ('34.1621', '-82.4333')}
这些是来自原始文本文件的示例:
Aaronsburg,PA,40.9184,-77.3786
Abbeville,AL,31.5951,-85.2108
并希望将字典中的所有元组更改为这样的字典:
{{'Aaronsburg', 'PA'}: {'40.9184', '-77.3786'}, {'Abbeville', 'AL'}:
{'31.5951', '-85.2108'}, {'Abbeville', 'GA'}: {'31.9890', '-83.3217'},
{'Abbeville', 'LA'}: {'29.9124', '-92.2110'}, {'Abbeville', 'MS'}:
{'34.4771', '-89.4450'}, {'Abbeville', 'SC'}: {'34.1621', '-82.4333'}}
但是,这样做时卡住了....
这是获取字典之前的原始代码
def coordinates(txt):
d = []
with open(txt) as f:
for line in f:
d.append(line.rstrip().split(','))
new_dict = {}
for sublist in d:
new_dict[tuple(sublist[:2])] = tuple(sublist[2:])
return((new_dict))
【问题讨论】:
-
键需要不可变,字典是可变的。所以,在 Python 中是不可能的。
-
那有没有其他方法可以将原始文本文件改为{{a, b}:{1,2},{c:d}:{3:4}}格式?
-
而
{'Aaronsburg', 'PA'}被称为集合....{'Aaronsburg':'PA'}被称为字典...您希望键是集合还是字典?价值观也是如此 -
是的,所以我在 new_dict.items()) 中尝试了 new_d = dict(set(k), set(v)) for k, v,但是出现了错误
-
我猜这实际上是作业问题。您也可以发布确切的任务。正如您从错误中看到的那样,它正在寻找的键是一个字符串,即如果我是对的,您需要将 City 和 state 组合在一个字符串键中,用逗号分隔。
标签: python python-3.x dictionary tuples