Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Dictionary - Fatal编程技术网

如何在python中组合具有相同键的两个不同字典中的值

如何在python中组合具有相同键的两个不同字典中的值,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我得到了两份文件。 文件1包含国家名称及其所在大陆的列表,例如: Country,Continent China,Asia United States of America,North America Brazil,South America 文件2包含国家名称及其人口和地区的列表,例如: Country|Population|Area China|1,339,190,000|9,596,960.00 United States of America|309,975,000|9,629,091

我得到了两份文件。 文件1包含国家名称及其所在大陆的列表,例如:

Country,Continent
China,Asia
United States of America,North America
Brazil,South America
文件2包含国家名称及其人口和地区的列表,例如:

Country|Population|Area
China|1,339,190,000|9,596,960.00
United States of America|309,975,000|9,629,091.00
Brazil|193,364,000|8,511,965.00
我想创建两个字典,一个用于file1,一个用于file2,然后我想组合具有相同键的所有值。 我的最终输出应该是这样的:

China:[193364000, 8511965.00, Asia]
其中人口是整数,面积是浮动的

我制作了两本字典,但是我不知道如何将这些值组合在一起

这是我的密码:

#first dictionary
Continent = {}
file2 = open("file2.txt", "r") 
for i in file2:
  file2 = i.strip
  parts2 = i.split(",") 
  Continent[parts2[0]] = parts2[1] 


#Second dictionary
Information = {}
file1 = open("file1.txt", "r")
for j in file1:
  file1 = j.strip
  part1 = j.split("|")
#Strip "," off from the values so that it's an intger/float
  part1[1] = part1[1].replace(",", "") 
  part1[2] = part1[2].replace(",", "")
  Information[part1[0]] = [part1[1], part1[2]]

如果可以保证键相同,则可以使用字典理解:

{country:Information[country] + [Continent[country]] for country in Continent}
您可以尝试以下方法:

continents = [i.strip('\n').split(',') for i in open('filename.txt')][1:-1]
country_data = [i.strip('\n').split('|') for i in open('filename.txt')][1:-1]
new_country_data = {a:[float(''.join(s.split(','))) for s in b]+[continents[a]] for a, b in country_data.items()}

好的,假设您已经填充了两个字典: 大陆、信息

假设两个词典具有相同的键,这将起作用:

让我们假设:

Continent = {'china': 'Asia'}
Information = {'china': [193364000, 8511965.00]}
然后: 将提供:

Information = {'china': [193364000, 8511965.00, 'Asia']}

希望这有帮助。

您不能将大陆的字符串类型与人口和地区数据的列表类型连接起来。假设人口和面积数据作为列表值存储在file2 dict中。 试试这个:

dict1 = {"China":"Asia","United States of America":"North America","Brazil":"South America"}
dict2 = {"China":[1339190000,9596960.00],"United States of America":[309975000,9629091.00],"Brazil":[193364000,8511965.00]}
dict3 = {}

for country,continent in dict1.items():
    for country2 in dict2.keys():
        if country == country2:
            data = dict2[country2]
            data.append(continent)
            dict3.update({country:data})

print dict2

如果将最后一行更改为
信息[part1[0]=[part1[1],part1[2],大陆[parts1[0]]]]
@样式,则无论在哪个国家,它都将只打印相同的大陆is@Qwert为什么?<代码>第1部分[0]应为当前国家/地区。如果我使用“for key in Information.kets()”而不是使用contraction.keys,这有关系吗?
dict1 = {"China":"Asia","United States of America":"North America","Brazil":"South America"}
dict2 = {"China":[1339190000,9596960.00],"United States of America":[309975000,9629091.00],"Brazil":[193364000,8511965.00]}
dict3 = {}

for country,continent in dict1.items():
    for country2 in dict2.keys():
        if country == country2:
            data = dict2[country2]
            data.append(continent)
            dict3.update({country:data})

print dict2