【问题标题】:Python add sequential value array to dictPython将顺序值数组添加到dict
【发布时间】:2014-09-19 04:36:39
【问题描述】:

例如我有 dict python

dict = {'a': '1', 'b': '2', 'c': '3'}

和数组

arr = ['4', '5', '6']

我想将顺序值数组添加到 dict

dict1 = {'a': '4', 'b': '5', 'c': '6'}

请提出具体的解决方案。

【问题讨论】:

  • 请不要命名变量dict
  • 只是键映射到值:D
  • 您依赖于具有特定顺序的 dict 键。字典是无序的;他们不保证他们的条目将以什么顺序出现。
  • @user2357112 OP 确实提供了一个将键映射到值的字典,'1' < '2' < '3'
  • 如果dict = {'a': '1', 'b': '2', 'c': '3'}my_dict = {'z' : '1', 'm' : '23', 'a' : '9'},您的预期输出是什么?

标签: python list python-2.7 dictionary


【解决方案1】:
>>> d = {'a': '1', 'b': '2', 'c': '3'}
>>> arr = ['4', '5', '6']
>>> dict(zip(sorted(d), arr))
{'a': '4', 'c': '6', 'b': '5'}

【讨论】:

  • keys() 不是必需的,因为迭代字典会产生键:dict(zip(sorted(d), arr))
  • 好吧,如果发帖人不更改他的变量名称,这将不起作用,因为他现在已经屏蔽了 dict 函数!
  • d 的键变为'pizza''bagels''chicken'sorted 时,这将遇到问题,并且突然不产生正确的顺序。
  • 我认为排序应该基于值,也许int值的值。
【解决方案2】:

你可以使用zip:

>>> import string
>>> arr = ['4', '5', '6']
>>> # dict(zip(sorted(original_dict), arr))
>>> dict(zip(string.ascii_lowercase, arr))
{'b': '5', 'c': '6', 'a': '4'}

顺便说一句,不要命名变量dict。它将隐藏内置类型/函数dict

【讨论】:

    【解决方案3】:

    不确定您要做什么,但下面的代码 sn-p 可以满足您在问题中的意图。

    import os
    dict = {'a': '1', 'b': '2', 'c': '3'}
    arr = ['4', '5', '6']
    
    dict1 = {}
    dictAsList = dict.items()
    i = 0
    for key in sorted(dict):
        try:
            dict1[key] = arr[i]
        except:
            pass
        i = i+1
    print dict1
    

    【讨论】:

    • iterkeys() 不是必需的。 sorted(dict) 就够了。
    【解决方案4】:

    Python 字典没有顺序。所以我不明白字典中的顺序是什么意思。

    如果您只想将所有值设置为另一个值,您可以这样做。

    d = {'a': '1', 'b': '2', 'c': '3'}
    arr = ['4', '5', '6']
    print dict(zip(d.keys(), arr))
    #{'a': '4', 'c': '5', 'b': '6'}
    

    如果您想将值设置为相同的顺序,您可以这样做。(您需要更改数据结构)

    from collections import OrderedDict
    
    d = OrderedDict([('a', '1'), ('b', '2'), ('c', '3')])
    arr = ['4', '5', '6']
    print dict(zip(d.keys(), arr))
    #{'a': '4', 'c': '6', 'b': '5'}
    

    【讨论】:

      猜你喜欢
      • 2023-01-26
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2018-12-06
      相关资源
      最近更新 更多