Join dictionary item, keys

This question already has an answer here:

  • Iterating over dictionaries using 'for' loops 12 answers

  • Python dictionaries are unordered (or rather, their order is arbitrary), and when you iterate on them, only the keys are returned:

    >>> d = {'0':0, '1':1, '2':2, '3':3, '4':4}
    >>> print(d)
    {'4': 4, '1': 1, '0': 0, '3': 3, '2': 2}
    

    If you need both keys and values, use iDict.items() .

    If you need ordering, use collections.OrderedDict .


    Iteration over a dictionary only ever yields keys:

    >>> list(iDict)
    ['2_key', '1_key', '4_key', '3_key']
    

    See the dict() documentation:

    iter(d)
    Return an iterator over the keys of the dictionary. This is a shortcut for iterkeys() .

    Both list() and str.join() will call iter() on their arguments to iterate over the elements.

    Dictionaries are unordered containers; their order stems from the underlying data structure and depends on the insertion and deletion history of the keys.

    This is documented under dict.items() :

    CPython implementation detail : Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary's history of insertions and deletions.

    Also see Why is the order in dictionaries and sets arbitrary?


    If you see the docs, you learn that iterating over dict returns keys.

    You need to iterate over dict.items() , that it over tuples (key, value) :

    '--'.join(iDict.items())
    

    If you need to have key AND value joined in one string, you need to explicitly tell Python how to do this:

    '--'.join('{} : {}'.format(key, value) for key, value in iDict.items())
    
    链接地址: http://www.djcxy.com/p/30358.html

    上一篇: 在python for循环中使用多于一个迭代

    下一篇: 加入词典项目,键