加入字典项,键

Tec*_*Bee 3 python join

请参阅下面的连接方法代码片段(使用Python 2.7.2):

iDict={'1_key':'abcd','2_key':'ABCD','3_key':'bcde','4_key':'BCDE'}
'--'.join(iDict)
Run Code Online (Sandbox Code Playgroud)

结果显示为

'2_key--1_key--4_key--3_key'
Run Code Online (Sandbox Code Playgroud)

请评论为什么只有密钥加入?序列也不按顺序排列.

注意 - 以下是各个方法.

  • '--'.join(iDict.values())==> 'ABCD--abcd--BCDE--bcde' ==>序列不按顺序排列
  • '--'.join(iDict.keys()) ==> '2_key--1_key--4_key--3_key'==>序列不在orde中

m.w*_*ski 8

如果您看到文档,您将学习迭代dict返回键.

你需要迭代dict.items(),它超过元组(key, value):

'--'.join(iDict.items())
Run Code Online (Sandbox Code Playgroud)

如果需要在一个字符串中加入关键AND值,则需要明确告诉Python如何执行此操作:

'--'.join('{} : {}'.format(key, value) for key, value in iDict.items())
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

仅在字典上进行迭代才产生键:

>>> list(iDict)
['2_key', '1_key', '4_key', '3_key']
Run Code Online (Sandbox Code Playgroud)

请参阅dict()文档

iter(d)
在字典的键上返回一个迭代器。这是的快捷方式iterkeys()

双方list()str.join()会打电话给iter()他们的争论中的元素进行迭代。

字典是无序的容器;它们的顺序来自基础数据结构,并取决于密钥的插入和删除历史记录。

这记录在dict.items()

CPython实现细节:键和值以任意顺序列出,该顺序是非随机的,在Python实现中会有所不同,并且取决于字典的插入和删除历史。

另请参阅为什么字典和集合中的顺序是任意的?


Hen*_*ter 5

Python 字典是无序的(或者更确切地说,它们的顺序是任意的),当您对它们进行迭代时,只返回键:

>>> d = {'0':0, '1':1, '2':2, '3':3, '4':4}
>>> print(d)
{'4': 4, '1': 1, '0': 0, '3': 3, '2': 2}
Run Code Online (Sandbox Code Playgroud)

如果您需要键和值,请使用iDict.items().

如果您需要订购,请使用collections.OrderedDict.