dict={a:qwertyuiop} dict1={a:qw,b:er,c:ty,d:ui,e:op}
我想從 dict 創建 dict 1 并拆分長度為 2 的值
我努力了
value1=dict.value()
value2=value1.split(2)
它不接受整數,我顯然使用了錯誤的函式,我在網上搜索過但找不到它,我應該使用哪個函式?
uj5u.com熱心網友回復:
# Defining variables
d = {'a': 'abcde', 'b': 'cdefghi'}
n = 2
# One-Liner:
d1 = dict([(i j*len(d), word) for j, key in enumerate(d.keys()) for i, word in enumerate([d[key][i:i n] for i in range(0, len(d[key]), n)])])
print(d1)
# Normal code
d2 = dict()
for j, key in enumerate(d.keys()): # Enumerating threw the keys
for i, word in enumerate([d[key][i:i n] for i in range(0, len(d[key]), n)]): # Enumerating threw n-characters at a time
d2[i j*len(d)] = word # Assigning to the right key with math
print(d2)
此代碼的一個缺點是我們正在丟失鍵,必須這樣做才能保持每個值只有一個鍵。
d1 的輸出: {0: 'ab', 1: 'cd', 2: 'cd', 3: 'ef', 4: 'gh', 5: 'i'}
d2 的輸出: {0: 'ab', 1: 'cd', 2: 'cd', 3: 'ef', 4: 'gh', 5: 'i'}
uj5u.com熱心網友回復:
首先,請不要使用內置型別名稱命名變數,例如dict. 我把它改成dct這里。
我們可以首先找出我們的輸出字典必須有多長,然后從string.ascii_lowercase切片適當數量的鍵值并將其保存為keys.
然后在 zip 中keys使用偶數和奇數索引字母dct['a'],使用 dict 理解來獲得我們想要的結果:
import string
keys = string.ascii_lowercase[: len(dct['a']) // 2]
out = {k:v1 v2 for k,v1,v2 in zip(keys, dct['a'][::2], dct['a'][1::2])}
另一種方法可能是dct['a']使用迭代iter并每次只取兩個字母,然后創建一個長度為 2 個字串的映射物件。然后使用dict建構式創建相同的結果:
out = dict(zip(keys, map(''.join, zip(*[iter(dct['a'])]*2))))
輸出:
{'a': 'qw', 'b': 'er', 'c': 'ty', 'd': 'ui', 'e': 'op'}
uj5u.com熱心網友回復:
此函式允許您完全做到這一點,并通過鍵入int或chr作為第三個函式引數為您提供整數鍵或字母鍵的選擇:
def ds(d,n,v=chr):
return({v(int(y/n) [96 if v==chr else 0][0]):"".join([str(d[z]) for z in d])[y-n:y] for y in range(n,len("".join([d[z] for z in d])) n,n)})
這首先遍歷字典值并回傳每個鍵的值(在 中str(d[z]) for z in d)。然后,該函式將字串值串列連接在一起(“”.join 部分),然后決議該字串(該for y in range(...)部分)的長度,并回傳一個字典,其中的值每次都拆分n。
例子:
a=ds(myDictionary,2) #split every second character (string keys)
print(a)
#{'a': 'qw', 'b': 'er', 'c': 'ty', 'd': 'ui', 'e': 'op'}
b=ds(myDictionary,3,int) #split every third (integer keys)
print(b)
#{1: 'qwe', 2: 'rty', 3: 'uio', 4: 'p'}
c=ds(myDictionary,56,char) #split every fifty-sixth (string keys)
print(c)
#{'a': 'qwertyuiop'}
此外,不需要外部模塊!這都是內置的東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404553.html
標籤:
上一篇:空字典上的TryGetValue
