RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1593662
Accepted
Altushka-97
Altushka-97
Asked:2024-09-12 19:59:04 +0000 UTC2024-09-12 19:59:04 +0000 UTC 2024-09-12 19:59:04 +0000 UTC

根据两个单词创建一个新词典

  • 772

有两个词:

'охрана'
'оранжевый'

基于它们,有必要创建两个字典(每个单词一个字典)。字典的key是一个字母,value是key的序号:

{'о': 1, 'х': 2, 'р': 3, 'а': 6, 'н': 5} 
{'о': 1, 'р': 2, 'а': 3, 'н': 4, 'ж': 5, 'е': 6, 'в': 7, 'ы': 8, 'й': 9}

接下来,您需要创建第三个字典,其中键是两个单词中重复的字母,值是原始字典中重复字母的含义集合:

{'н': {5,4}, 'р': {3, 2}, 'о': {1, 1}, 'а': {6, 3}}

我正在尝试以下代码,但无法形成键和值相互匹配的正确字典:

a='охрана'
b='оранжевый'
a1={a[i]:i+1 for i in range(len(a))}
print(a1)
b1={b[i]:i+1 for i in range(len(b))}
print(b1)
res1=set()
res2=[]
for i in b1.keys():
    if i in a1.keys():
        res1.add(i)
for i,j in zip(a1,b1):
    if i in b1:
        res2+=[[a1[i]]+[b1[i]]]
print(res1)
print(res2)
res3={i:j for i,j in zip(res1,res2)}
print(res3)
python
  • 4 4 个回答
  • 61 Views

4 个回答

  • Voted
  1. Швеев Алексей
    2024-09-12T21:02:02Z2024-09-12T21:02:02Z

    我的一个简单的(就性能而言不是最佳的)解决方案:

    rA = wordA[::-1]; rB = wordB[::-1]
    result = {l: (rA.index(l)+1, rB.index(l)+1) for l in set(wordA) if l in wordB}
    

    解释:

    for l in wordA- 对于单词 A 中的所有字母

    if l in wordB- 位于单词 B 中

    l: (wordA.index(l)+1, wordB.index(l)+1)l- 添加一个带有值的键:

    (индекс первого вхождения символа в первом слове, индекс первого вхождения символа во втором слове)

    • 3
  2. Amgarak
    2024-09-12T21:02:41Z2024-09-12T21:02:41Z
    str1 = 'охрана'
    str2 = 'оранжевый'
    
    def str_to_char_dict(string):
        return {char: index + 1 for index, char in enumerate(string)}
    
    dict1 = str_to_char_dict(str1)
    dict2 = str_to_char_dict(str2)
    
    common_keys = set(dict1.keys()) & set(dict2.keys())
    result_dict = {key: {dict1[key], dict2[key]} for key in common_keys}
    
    print(dict1)
    print(dict2)
    print(result_dict)
    

    结论:

    {'о': 1, 'х': 2, 'р': 3, 'а': 6, 'н': 5}
    {'о': 1, 'р': 2, 'а': 3, 'н': 4, 'ж': 5, 'е': 6, 'в': 7, 'ы': 8, 'й': 9}
    {'н': {4, 5}, 'о': {1}, 'а': {3, 6}, 'р': {2, 3}}
    
    [Program finished]
    
    • 3
  3. Oopss
    2024-09-12T21:04:38Z2024-09-12T21:04:38Z
    a='охрана'
    b='оранжевый'
    
    set_a=set('охрана')
    set_b=set('оранжевый')
    res={}
    for i in set_a.intersection(set_b):
        pos = []
        pos.append(a.rindex(i) + 1)
        pos.append(b.rindex(i) + 1)
        res[i] = set(pos)
    
    print(res)
    

    {'р': {2, 3}, 'о': {1}, 'н': {4, 5}, 'а': {3, 6}}
    
    • 2
  4. Best Answer
    Alexey Trukhanov
    2024-09-12T20:58:52Z2024-09-12T20:58:52Z

    我在没有回复的时候留下了评论,事情就会这样。你的错误是,当你组装最后一个字典时res3,你zip试图从集合(res1)的值中进行配对,根据定义,集合()是混乱的,而列表(res2),根据定义,是有序的。因此,每次运行程序时,您都会从集合中取出任何字母,并用列表中的一对非常特定的值替换它。您需要res1将其定义为一个列表,一切都会顺利进行。

    a = 'охрана'
    b = 'оранжевый'
    
    a1 = {a[i]:i+1 for i in range(len(a))}
    print(a1)
    
    b1 = {b[i]:i+1 for i in range(len(b))}
    print(b1)
    
    res1 = []
    res2 = []
    
    for i in b1.keys():
        if i in a1.keys():
            res1.append(i)
    
    for i, j in zip(a1, b1):
        if i in b1:
            res2 += [[a1[i]]+[b1[i]]]
    
    print(res1)
    print(res2)
    
    res3={i:j for i,j in zip(res1,res2)}
    print(res3)
    

    还有一个我在评论中提出的问题——作业说最后一个字典的值应该是集合,而不是列表。同时,赋值中存在一个明显的错误,集合被指示为{1,1},这是不可能的,因为集合中不能有相同的值。因此,有集合的结果是可能的,但不是{1,1},而是{1}。像这样:

    res3 = {i:set(j) for i, j in zip(res1, res2)}
    
    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5