You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何从列表内的字典获取值?以及如何将列表内字典的键值分配给不同变量(寻找替代for循环的全局赋值更优方案)

嘿,我来帮你搞定这两个Python问题!

问题1:如何在Python中从包含字典的列表里获取值?

这其实分两种场景,根据列表里字典的数量来选最优方法:

  • 如果列表只有一个字典(比如你给出的示例data = [{'country':[1,'US']}]):直接通过列表索引+字典键就能快速取值,完全不用循环:

    data = [{'country':[1,'US']}]
    # 获取字典里"country"对应的值
    country_data = data[0]['country']
    print(country_data)  # 输出: [1, 'US']
    # 进一步拆分里面的元素
    rank = country_data[0]
    country_name = country_data[1]
    
  • 如果列表有多个字典:遍历列表里的每个字典,再按键取值即可:

    data = [{'country':[1,'US']}, {'country':[2,'CN']}]
    for item in data:
        country_data = item['country']
        print(f"排名:{country_data[0]}, 国家:{country_data[1]}")
    
问题2:如何将列表内字典的键和值分配给不同的变量(更优方法+全局赋值)?

先提个小细节:你当前的代码里有个小错误——country = j[1][0]应该改成j[1][1],不然rank和country会取到同一个值(都是1)哦。

回到你的需求:如果列表里只有一个字典(像示例那样),完全不需要嵌套循环,直接提取赋值更高效。如果需要全局赋值,可以直接在全局作用域里赋值,或者用globals()函数(适合在函数内部给全局变量赋值的场景)。

方法1:直接提取(适合单个字典的场景)

data = [{'country':[1,'US']}]
# 取出列表里唯一的字典
target_dict = data[0]
# 获取键名和对应的值列表(因为只有一个键,用next+iter快速获取)
key_name = next(iter(target_dict.keys()))
rank, country_name = target_dict[key_name]  # 解包值列表到两个变量

# 全局赋值(脚本顶层直接定义的变量本身就是全局的)
type_var = key_name
rank_var = rank
country_var = country_name

print(type_var)   # 输出: country
print(rank_var)   # 输出: 1
print(country_var)# 输出: US

方法2:用globals()实现全局赋值(适合函数内操作)

如果是在函数里想把变量变成全局可访问的,可以这样写:

def assign_global_vars():
    data = [{'country':[1,'US']}]
    target_dict = data[0]
    key_name = next(iter(target_dict.keys()))
    rank, country_name = target_dict[key_name]
    
    # 把变量注入全局作用域
    globals()['type'] = key_name
    globals()['rank'] = rank
    globals()['country'] = country_name

assign_global_vars()
# 在函数外也能访问这些全局变量
print(type)    # 输出: country
print(rank)    # 输出: 1
print(country) # 输出: US

补充:如果列表有多个字典

如果列表里有多个字典,不建议用全局变量存同名值(会覆盖),可以把变量存到列表或其他结构里:

data = [{'country':[1,'US']}, {'city':[3,'NY']}]
type_list = []
rank_list = []
value_list = []

for item in data:
    key, values = next(iter(item.items()))
    type_list.append(key)
    rank_list.append(values[0])
    value_list.append(values[1])

print(type_list)  # 输出: ['country', 'city']
print(rank_list)  # 输出: [1, 3]
print(value_list) # 输出: ['US', 'NY']

内容的提问来源于stack exchange,提问作者swarna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:57:39