python - 列表的字典变成元组的元组的字典

我有这本字典:

a = {'Jimmy': [['5', '7', '5'], ['S', 'F', 'R']], 
     'Limerick': [['8', '8', '5', '5', '8'], ['A', 'A', 'B', 'B', 'A']]}

我希望最终产品是一个包含元组元组的字典,但我认为第二个循环不起作用。

我想要的:

a = {'Jimmy': (('5', '7', '5'), ('S', 'F', 'R')), 
     'Limerick': (('8', '8', '5', '5', '8'), ('A', 'A', 'B', 'B', 'A'))}

谁能帮我看看我做错了什么?

我试过:

a = {'Jimmy': [['5', '7', '5'], ['S', 'F', 'R']], 
     'Limerick': [['8', '8', '5', '5', '8'], ['A', 'A', 'B', 'B', 'A']]}

for key in a:
    a[key] = tuple(a[key])
    for value in a[key]:
        value = tuple(value)
        
print(a)

但是没用。

最佳答案

value 指的是一个新变量——重新分配它不会修改字典。

您应该使用 map() 将每个列表转换为元组,然后再次调用 tuple() 将生成的 map 对象转换为元组:

for key in a:
    a[key] = tuple(map(tuple, a[key]))

https://stackoverflow.com/questions/71760484/

相关文章:

json - 在 Rust 中使用可选的 JSON 字段,避免在 JSON 中使用 None/nul

html - Font-Awesome 版本 6 图标未显示

c++ - 交换 const 成员是未定义的行为吗? C++17

vue.js - 如何使用 SSR 提高 Nuxt 的速度性能

r - 通过匹配列和值 R 对数据帧进行子集和分组

c++ - 奇怪的 std::list 迭代行为

javascript - 为什么 react 会抛出 "Too many re-renders.",

ruby-on-rails-7 - 如何在Rails7中使用importmap固定npm、yarn包

html - 如何识别dex :get as being JSON or HTML in Commo

arrays - Matrix 有一列全部为 'true' 。如何在不到 O(mn) 的时间内找到它