python - 需要针对每个其他键及其值对每个键及其值执行一个函数,并记录结果
问题描述
我正在编写一段代码,需要对字典中的所有键/值执行函数循环样式。
为了简化问题,我有一个字典:
my_dict = {a: [1,2,3,4,5], b: [5,4,3,2,1], c: [2,4,3,5,1], d: [5,1,4,2,3]}
我想调用一个函数,该函数将每个键值作为每个其他键的输入:
(该函数将输出一个整数。)
x1 = my_func(my_dict[a], my_dict[b])
x2 = my_func(my_dict[a], my_dict[c])
x3 = my_func(my_dict[a], my_dict[d])
x4 = my_func(my_dict[b], my_dict[c])
x5 = my_func(my_dict[b], my_dict[d])
x6 = my_func(my_dict[c], my_dict[d])
并保存结果:
result_dict = {a:{b:x1, c:x2, d:x3 }, b:{a:x1, c:x4, d:x5}, c:{a:x2, b:x4, d:x6}, d:{a:x3, b:x5, c:x6}}
我已经尝试了多个 for 循环,但我正在绕圈子:
my_dict = {1: [1,2,3,4,5], 2: [5,4,3,2,1], 3: [2,4,3,5,1], 4: [5,1,4,2,3]}
output_dict = {}
for key in my_dict:
for next_key in my_dict:
output_dict[key] = {next_key: my_func(my_dict[key],my_dict[next_key])}
print(output_dict)
感谢您的时间。
解决方案
您可以稍微修改循环并将其转换为字典理解,以按照您需要的方式工作:
my_dict = {1: [1,2,3,4,5], 2: [5,4,3,2,1], 3: [2,4,3,5,1], 4: [5,1,4,2,3]}
output_dict = {}
for key in my_dict:
output_dict[key] = {next_key: my_func(my_dict[key], my_dict[next_key]) for next_key in my_dict if key != next_key}
print(output_dict)
无耻地取自另一个答案(:p),假设如果my_func
是:
def my_func(x, y):
return x[0] + y[0]
这会输出预期的:
{1: {2: 6, 3: 3, 4: 6}, 2: {1: 6, 3: 7, 4: 10}, 3: {1: 3, 2: 7, 4: 7}, 4: {1: 6, 2: 10, 3: 7}}
推荐阅读
- entity-framework - InMemory 数据库 (EF) 的 Liquibase 变更集
- webpack - 在 webpack 构建后 Highlight.js 语法突出显示不起作用
- python - 在同一类 OpenCV Python 中的两个不同函数中使用 VideoCapture()
- android - Flutter SDK 没有平滑渐变?
- vba - Vba 电子邮件生成器,来自 excel 电子表格的主题
- android - ionic cordova run android正在给出gradle错误
- laravel - Laravel 克隆/多集合到模型插入
- regex - 正则表达式在手机号码的第三列中没有空格
- javascript - 如何将扫描的 QR 码值发布到服务器上的数据库
- c++ - 链接时突然收到 maxrregcount 警告和未定义的引用错误