Python元组和字典

Python元组和字典,python,python-3.x,Python,Python 3.x,如何将字符串和dict组合为元组列表 假设我有一根弦 s1 = 'Canada' s2 = 'Norway' 我有两条口述 dict1 = {'gdp': '10', 'area': '100'} dict2 = {'gdp': '20', 'area': '200'} 我想得到一个元组列表,比如 [('Canada', {'gdp': '10', 'area': '100'}), ('Norway', {'gdp': '20', 'area': '200'})] 提前感谢。您可以尝试

如何将字符串和dict组合为元组列表

假设我有一根弦

s1 = 'Canada'
s2 = 'Norway'
我有两条口述

dict1 = {'gdp': '10', 'area': '100'} 
dict2 = {'gdp': '20', 'area': '200'}
我想得到一个元组列表,比如

[('Canada', {'gdp': '10', 'area': '100'}),
 ('Norway', {'gdp': '20', 'area': '200'})]
提前感谢。

您可以尝试以下方法:

s1 = 'Canada'
s2 = 'Norway'
dict1 = {'gdp': '10', 'area': '100'} 
dict2 = {'gdp': '20', 'area': '200'}
final_dict = [(a, b) for a, b in zip([s1, s2], [dict1, dict2])]
输出:

[('Canada', {'gdp': '10', 'area': '100'}), ('Norway', {'gdp': '20', 'area': '200'})]
[('Canada', {'area': '100', 'gdp': '10'}), ('Norway', {'area': '200', 'gdp': '20'})]

您不应该定义多个变量,然后尝试将这些变量组合到一个包含已定义变量的
列表中,因为它是不可伸缩的。这是因为如果你说有十个
sx
那么
s1
s2
s3
,那就太可笑了!这些值必须来自某个地方,因此您应该直接从该源创建字典列表,而不是定义中间变量

但是,您只需一个简单的
列表
声明即可实现所需:

final_dict = [(s1, dict1), (s2, dict2)]
其中:

[('Canada', {'gdp': '10', 'area': '100'}), ('Norway', {'gdp': '20', 'area': '200'})]

如果希望避免在代码中为
循环编写任何
,也可以使用
map
执行此操作:

res = list(map(lambda i,j: (i,j), [s1,s2], [dict1, dict2]))
print(res)
输出:

[('Canada', {'gdp': '10', 'area': '100'}), ('Norway', {'gdp': '20', 'area': '200'})]
[('Canada', {'area': '100', 'gdp': '10'}), ('Norway', {'area': '200', 'gdp': '20'})]

你能告诉我你尝试过什么,结果是什么吗?这是一个元组列表。你可以通过做
[(s1,dict1),(s2,dict2)]
[(a,b)为a,b在zip(…)]
==>
列表(zip(…)
@Sakshi如果这个答案对你有帮助,请接受它。非常感谢。你不认为使用zip和元组解包对于
4
变量来说有点过于复杂了吗…@JoeIddon
zip
tuple
在一般情况下更好,当有两个以上的对应国家和它们的字典时,这样以后的操作就更简单了。不过,不鼓励使用大量变量声明。但我同意这是更一般的。。。